首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >8月份找新学生,7月份从同一表找不到新学生

8月份找新学生,7月份从同一表找不到新学生
EN

Stack Overflow用户
提问于 2014-11-13 15:41:28
回答 1查看 37关注 0票数 0

我有带COURSEDATE专栏的学生桌。我想找出参加下一堂课的新生。

以下是我所做的:

代码语言:javascript
复制
SELECT COUNT(*) 
FROM STUDENTS
WHERE TO_DATE(COURSEDATE ,'DD-MON-YY') BETWEEN TO_DATE('01-JUL-14','DD-MON-YY') AND TO_DATE('10-JUL-14','DD-MON-YY');

返回:10 462

代码语言:javascript
复制
SELECT COUNT(*) 
FROM STUDENTS
WHERE TO_DATE(COURSEDATE ,'DD-MON-YY') BETWEEN TO_DATE('11-JUL-14','DD-MON-YY') AND TO_DATE('20-JUL-14','DD-MON-YY');

返回:10 989

我想要做的是将10,989-10,462=527学生之间的差异过滤成一个不同的结果集。

我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-13 15:57:00

这就是您所要求的("10,989-10,462=527"):

代码语言:javascript
复制
SELECT sum(case when TO_DATE(COURSEDATE ,'DD-MON-YY') >= TO_DATE('11-JUL-14','DD-MON-YY') then 1 else 0 end)
       - sum(case when TO_DATE(COURSEDATE ,'DD-MON-YY') < TO_DATE('11-JUL-14','DD-MON-YY') then 1 else 0 end)
FROM STUDENTS
WHERE TO_DATE(COURSEDATE ,'DD-MON-YY') BETWEEN TO_DATE('01-JUL-14','DD-MON-YY') AND TO_DATE('20-JUL-14','DD-MON-YY');

这是没有参加第一门课程的学生人数:

代码语言:javascript
复制
SELECT count(distinct s1.student_id)
FROM STUDENTS s1
WHERE TO_DATE(s1.COURSEDATE ,'DD-MON-YY') BETWEEN TO_DATE('11-JUL-14','DD-MON-YY') 
                                              AND TO_DATE('20-JUL-14','DD-MON-YY')
  AND NOT EXISTS (SELECT 1 FROM STUDENTS s2 
                  WHERE s2.student_id = s1.student_id 
                       AND DATE(s2.COURSEDATE ,'DD-MON-YY') BETWEEN TO_DATE('01-JUL-14','DD-MON-YY') 
                                                                AND TO_DATE('10-JUL-14','DD-MON-YY'));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26912692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档