Mysql 子查询问题
我需要做一份关于每天学生总数的报告。我遇到的问题是,在我的子查询中,我无法进行适当的分组,因此,在一天之内,我想知道有多少人是出于特定原因进入的 我的问题是:Mysql 子查询问题,mysql,select,subquery,Mysql,Select,Subquery,我需要做一份关于每天学生总数的报告。我遇到的问题是,在我的子查询中,我无法进行适当的分组,因此,在一天之内,我想知道有多少人是出于特定原因进入的 我的问题是: SELECT DATE_FORMAT(session.signintime, '%b %d %Y') Date, COUNT(session.session_id) 'Total', (SELECT COUNT(aidyear) FROM session WHERE aidyear = '12-13')
SELECT
DATE_FORMAT(session.signintime, '%b %d %Y') Date,
COUNT(session.session_id) 'Total',
(SELECT COUNT(aidyear) FROM session WHERE aidyear = '12-13') '12-13',
(SELECT COUNT(aidyear) FROM session WHERE aidyear = '13-14') '13-14'
FROM session
WHERE status = '3'
GROUP BY Date;
结果报告如下:
+-------------+-------+-------+-------+
| Date | Total | 12-13 | 13-14 |
+-------------+-------+-------+-------+
| Apr 15 2013 | 47 | 38 | 25 |
| Apr 16 2013 | 5 | 38 | 25 |
+-------------+-------+-------+-------+
2 rows in set (0.00 sec)
正如您注意到的,2013年4月16日总共只有5名学生。现在请注意,这两行的12-13-14是相同的
当我尝试在子查询中执行group by时,会出现以下错误:
错误1241(21000):操作数应包含1列
这意味着子查询将返回多于一行
我尝试了以下查询:
SELECT
DATE_FORMAT(session.signintime, '%b %d %Y') Date,
COUNT(session.session_id) 'Total',
(SELECT DATE_FORMAT(session.signintime, '%b %d %Y') Date,
COUNT(aidyear) FROM session WHERE aidyear = '12-13' GROUP BY Date) '12-13',
(SELECT DATE_FORMAT(session.signintime, '%b %d %Y') Date, COUNT(aidyear) FROM session WHERE aidyear = '13-14' GROUP BY Date) '13-14'
FROM session WHERE status = '3'
GROUP BY Date;
根据Evan的要求编辑1
我正在查询的表只是会话表。我没有加入(正如你所注意到的)
该表包含以下内容:
Primary Key : session_id
Foreign Key : anum(which is a student ID)
然后我们有:
为什么、aidyear、signintime、STUDENTCOMMENT、status
似乎您应该能够将案例
用于聚合:
SELECT DATE_FORMAT(session.signintime, '%b %d %Y') Date,
COUNT(session.session_id) 'Total',
sum(case when aidyear = '12-13' then 1 else 0 end) '12-13',
sum(case when aidyear = '13-14' then 1 else 0 end) '13-14'
FROM session
WHERE status = '3'
GROUP BY Date;
你能给我们一些被查询的表格的布局以及一些示例数据吗?更新了原始帖子。而这些数据实际上是实时数据,我注意到了这个小故障,我想呃哦..谢谢编辑,你能提供一些示例记录吗?我不能,因为这些实时数据,我不能只是在系统中添加假记录。我现在正在工作。但是蓝脚帮了我,伙计,你的帅哥!我甚至都不知道这个案子。非常感谢,它很有效!我忘了打绿色支票,我反而打了你。