Mysql SQL查询中出现问题(预期输出未出现)
我是Mysql新手。我有一个table Student,列属性如下:Mysql SQL查询中出现问题(预期输出未出现),mysql,sql,database,Mysql,Sql,Database,我是Mysql新手。我有一个table Student,列属性如下: Result as 'F for fail','P' for pass, Four department MECH,CSE ECE,EEE, YEAR as 1,2,3,4 Mark from 1 to 100 Name as name of student and first column is auto generated Id 我的预期产出是: 我尝试使用以下方法获取此输出: SELECT t1.* FROM(
Result as 'F for fail','P' for pass,
Four department MECH,CSE ECE,EEE,
YEAR as 1,2,3,4
Mark from 1 to 100
Name as name of student
and first column is auto generated Id
我的预期产出是:
我尝试使用以下方法获取此输出:
SELECT t1.* FROM(SELECT YEAR,
CASE WHEN DEPT='CSE' THEN COUNT(RESULT) ELSE NULL END CSE ,
CASE WHEN DEPT='ECE' THEN COUNT(RESULT) ELSE NULL END ECE,
CASE WHEN DEPT='MECH' THEN COUNT(RESULT) ELSE NULL END MECh,
CASE WHEN DEPT='EEE' THEN COUNT(RESULT) ELSE NULL END EEE,
CASE WHEN DEPT='CIE' THEN COUNT(RESULT) ELSE NULL END CIE
FROM OT.STUDENT GROUP BY YEAR,DEPT,RESULT) t1
我的输出是:
我被困在这里。我已经完成了分组,但为什么1,2,3,4会重复出现?1打印了8次,因为只有四年时间。我想我的查询错了。这是我升序排序时的输出:
我认为您需要条件聚合。这看起来像:
SELECT YEAR,
SUM(CASE WHEN DEPT = 'CSE' AND RESULT = 'P' THEN 1 ELSE 0 END) as CSE_pass,
SUM(CASE WHEN DEPT = 'CSE' AND RESULT = 'F' THEN 1 ELSE 0 END) as CSE_fail,
SUM(CASE WHEN DEPT = 'ECE' AND RESULT = 'P' THEN 1 ELSE 0 END) as ECE_pass,
. . .
FROM OT.STUDENT
GROUP BY YEAR;
groupby
键定义结果集中的每一行——每个值的组合都是一行。您希望每年有一行,因此这应该是GROUP BY
中唯一的一列。我认为您需要条件聚合。这看起来像:
SELECT YEAR,
SUM(CASE WHEN DEPT = 'CSE' AND RESULT = 'P' THEN 1 ELSE 0 END) as CSE_pass,
SUM(CASE WHEN DEPT = 'CSE' AND RESULT = 'F' THEN 1 ELSE 0 END) as CSE_fail,
SUM(CASE WHEN DEPT = 'ECE' AND RESULT = 'P' THEN 1 ELSE 0 END) as ECE_pass,
. . .
FROM OT.STUDENT
GROUP BY YEAR;
groupby
键定义结果集中的每一行——每个值的组合都是一行。您希望每年有一行,因此这应该是分组依据
中唯一正确标记的列!!!如果这是MySQL,为什么我会在这个问题上看到Oracle标签?我在用toad Oracle做,但你说这是MySQL?如果你删除否则为NULL会发生什么?同样的结果正确地出现了!!!如果这是MySQL,为什么我会在这个问题上看到Oracle标签?我在用toad Oracle做,但你说这是MySQL?如果你删除否则为NULL会发生什么?同样的结果出现了