当前位置: 首页 > 知识库问答 >
问题:

使用GROUPBY的oracle sql查询

薛朝
2023-03-14

我有下面的模式,

学生(名字、姓氏、SID)
已注册(学生ID、课程ID)
课程(CID、课程名称、系)

我需要找出哪些学生上的CSC课比IT课多。CSCIT位位于部门类别中。我有以下查询,其中列出了所有注册课程的学生以及他们注册了多少CSC课程。

select studentid,count(department) as cscclasses
from enrolled
left join course
on courseid = cid
and department = 'CSC'
group by studentid;

不太确定如何将这个数字与那些注册信息技术课程的人进行比较。

共有2个答案

穆鸿波
2023-03-14

在CTE中,计算每个学生的CSC和IT课程计数

   With CTE
   As
  (
         select studentid,
            SUM(case when 
             department ='CSC' 
             then 1 else 0 
             end) as CSCCount ,
            SUM(case when 
             department ='IT' 
             then 1 else 0 
             end) as ITCount ,
         from enrolled
         left join course
         on courseid = cid
        And Sid =studentid
        group by studentid
  )
 Select E.* FROM
JOIN CTE
On CTE.studentid = E.sid
Where CTE.CSCCount >      CTE.ITCount
郑乐池
2023-03-14

您可以尝试使用sumcase

select studentid
from(
    select studentid,
        SUM(CASE WHEN department='CSC'
                          THEN 1
                          ELSE 0
                  END) as cscclasses,
        SUM(CASE WHEN department='IT'
                          THEN 1
                          ELSE 0
                  END) as itclasses
    from enrolled
    left join course
    on courseid = cid
    and department = 'CSC' OR department = 'IT'
    group by studentid
)
where cscclasses > itclasses
 类似资料:
  • 我需要将以下查询转换为hibernate条件查询。请帮忙 由于投票表上的复合主键,我用@Embeddable分隔了主键,所以后面的createQuery不起作用 和可嵌入对象 请建议一个更好的方法。

  • 1)使用的第一个查询...大约用了23秒 目前我修改了查询..这需要大约9秒 我不确定要做的表演是什么?我希望这个查询是快速的..我尝试索引rid和id,但这仍然使查询变得更糟。 下面是表格的详细信息 mza_movie_upload MZA_Movie_Statics

  • 在Crystal Reports中,我使用以下查询(针对Oracle数据库)为报表中的单个字段生成数据: 这可以很好地工作,并基于提供的{HB_As_At_Date}(the{?}语法是Crystal将参数值嵌入SQL(SQL)的方法。不过,上述查询的内容不是我的问题——我想做的是在几个不同的日期重复运行它,并将输出输入Crystal以供在报告中使用。 假设我希望在9月的每个星期一运行这个查询,我

  • 问题内容: 我正在尝试使用具有相似列值的行来估算值。 例如,我有这个数据框 我想使用相似的列[‘one’]和[‘two’]的键,并且如果列[‘three’]并非完全是nan,则从具有相似的键的行中插值[ ‘3’] 这是我的愿望结果 您会看到键1和3不包含任何值,因为现有值不存在。 我试过使用groupby fillna() 这给了我一个错误。 我尝试了正向填充,这给了我一个相当奇怪的结果,那就是它

  • 此代码正在触发错误 无效的sql对象。 从文档中我觉得表中的任何对象都是sql对象<这里怎么了? 在Oracle 10G中考虑以下函数 在10G上下文中考虑以下函数 我得到了一个错误的无效对象 我的桌子就像 此表位于“测试”模式中,我与SCOTT有联系,SCOTT有“测试时授予选择权”。测试表到scott's 我还是会出错 ERR_INVALID_OBJECT

  • 目前,我正在为客户列表开发一个“过滤器”功能。 我有以下子查询,我不确定是否有办法用CriteriaBuilder构建它。它也可以在没有multiselect但是我需要、和来选择最小值。结果应该是一个数字。 例如客户余额表 更新:这是我当前的代码,但是 如何为我的子查询添加排序依据 如何设置maxResult 谢谢!B