【问题标题】:How do I manipulate the Query result?如何操作查询结果?
【发布时间】:2020-04-10 14:13:40
【问题描述】:

假设有来自不同班级的学生参加了考试,并显示了结果的总和

Student Table ( Student_id, Grade, Class)

所以如果我想查询跨班级的成绩总和,我会这样做

SELECT Class, SUM(Grade) 
FROM Student
GROUP BY Class

查询结果:

Class : Grade
 A    : 500
 B    : 400
 C    : 300

但是由于C班作弊事件,C班总成绩应该显示为0..在应用第一个查询语句后我该怎么做?

预期结果:

Class : Grade
  A   : 500
  B   : 400
  C   : 0

第一次查询之后......

【问题讨论】:

    标签: sql oracle data-manipulation


    【解决方案1】:

    您只需使用case 表达式:

    SELECT Class,
           (CASE WHEN Class = 'C' THEN 0 ELSE SUM(Grade) END)
    FROM Student
    GROUP BY Class
    

    【讨论】:

    • 那么 COUNT() 呢?我尝试使用 COUNT,但它一直说不是按表达式分组....当我将 case 语句添加到按部分分组时,它说这里不允许按函数分组....
    • 您不需要在group by 子句中添加case 语句。如果您想以类似的方式计数,只需在答案的查询中将SUM 替换为COUNT
    猜你喜欢
    • 1970-01-01
    • 2020-01-09
    • 2015-06-11
    • 2011-09-19
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    相关资源
    最近更新 更多