从MySQL中的2个表中执行SELECT COUNT
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从MySQL中的2个表中执行SELECT COUNT,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1578字,纯文字阅读大概需要3分钟。
内容图文
我有2个表学生和课程.
学生有以下专栏:
SID INTERGER
NAME VARCHAR
DEPARTMENT INTEGER
REGISTRATIONDATE DATE
课程有以下几栏:
CID INTERGER
SID INTERGER
ENROLLEDATE
我想获得每个注册日期的学生总数,按部门和每个课程注册的学生的注册日期,这可以通过注册日期和注册日期之间的注册来确定.
如果我的输入数据是:
STUDENT:
1,John,CS,11/01/2014
2,Jim,CS,11/01/2014
3,Jane,LAW,10/01/2014
4,Rose,Engineering,11/01/2014
COURSE:
1,1,11/10/2014
1,2,11/11/2014
2,3,11/11/2014
OUTPUT:
StudentCount,Department,RegistrationDate,StudentInCourseCount
2,CS,11/01/2014,2
1,LAW,10/01/2014,1
1,Engineering,11/01/2014,
StudentCount =在每个注册日期注册部门的学生人数
部门=该计数的部门名称
RegistrationDate =每个唯一注册期
StudentInCourseCount =注册日期与注册日期之间注册的每门课程的学生人数
注意:OUTPUT中最后一行的StudentInCourseCount为空,因为Rose未在任何课程中注册.
试图尽可能清楚地解释它.
这是我的尝试,但StudentInCourseCount没有出来,
SELECT COUNT(sd.SID) As STUDENTCOUNT,sd.DEPARTMENT,sd.REGISTRATIONDATE,
(
SELECT COUNT(p.SID)
FROM COURSE p
WHERE sd.SID=p.SID AND p.ENROLLDATE BETWEEN sd.REGISTRATIONDATE AND sd.REGISTRATIONDATE+28
) AS StudentInCourseCount
FROM STUDENT sd
GROUP BY DEPARTMENT,REGISTRATIONDATE
ORDER BY REGISTRATIONDATE DESC;
谢谢.
解决方法:
试试这个.使用条件聚合逻辑查找StudentInCourseCount.更新:Osa E是对的,应该是Distinct Count.
SELECT Count(DISTINCT s.SID) STUDENTCOUNT,
sd.DEPARTMENT,
sd.REGISTRATIONDATE,
Count(CASE
WHEN ENROLLDATE BETWEEN REGISTRATIONDATE AND REGISTRATIONDATE + 28 THEN 1
END) StudentInCourseCount
FROM STUDENT S
LEFT JOIN COURSE C
ON S.SID = C.SID
GROUP BY DEPARTMENT,
REGISTRATIONDATE
内容总结
以上是互联网集市为您收集整理的从MySQL中的2个表中执行SELECT COUNT全部内容,希望文章能够帮你解决从MySQL中的2个表中执行SELECT COUNT所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。