首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
mysql怎样做分类查询
绿色的小苹果
2021-01-16 14:24
mysql怎样做分类查询, 如统计每个学生成绩, 语文成绩分数单独统计是一类, 其他成绩分数总和是一类。 这样的sql查询应该怎么写
项目:
JFinal
1
评论区
杜福忠
2021-01-16 14:46
SELECT a.username , a.mark AS '语文', b.mark AS '其他'
FROM 成绩表 a
LEFT JOIN (
SELECT z.username, SUM(z.mark) mark FROM 成绩表 z WHERE z.course != '语文' GROUP BY z.username
) b ON a.username = b.username
WHERE a.course = '语文'
好像是这样,纵转横嘛
回复
绿色的小苹果
2021-01-16 14:54
@杜福忠
我试下 感谢
回复
绿色的小苹果
2021-01-16 16:05
@杜福忠
当添加一个只有数学成绩, 没有语文成绩的学生。 在使用上述查询的时候会查不到没有语文成绩的人
回复
BTMTimor
2021-01-16 16:12
@绿色的小苹果
使用left join
回复
绿色的小苹果
2021-01-16 16:19
@BTMTimor
left join也不行
回复
杜福忠
2021-01-16 17:25
SELECT a.username , b.mark AS '其他' , c.mark AS '语文'
FROM ( SELECT username 成绩表 GROUP BY username)a
LEFT JOIN (
SELECT username, SUM(mark) mark FROM 成绩表 WHERE course != '语文' GROUP BY username
) b ON a.username = b.username
LEFT JOIN (
SELECT username, SUM(mark) mark FROM 成绩表 WHERE course = '语文' GROUP BY username
) c ON a.username = c.username
@BTMTimor
说的没错,再加一个 LEFT JOIN 即可,都是纵转横写法
回复
SuperEric
2021-01-18 16:13
@杜福忠
👍
回复
enderjo
2021-01-20 15:48
最近刚好也写一个类似的统计,用的是SUM语法,可以参考下
SELECT
username,
SUM(
IF
( course = '语文', mark, 0 )) yuwen,
SUM(
IF
( course = '数学', mark, 0 )) shuxue,
SUM(
IF
( ( course <> '语文' AND course <> '数学' ), mark, 0 )) qita
FROM
test_score
GROUP BY
username
回复
绿色的小苹果
2021-01-21 11:57
@enderjo
没用过这个语法, 但是提示有错误
回复
发送
我要分享
热门分享
扫码入社
FROM 成绩表 a
LEFT JOIN (
SELECT z.username, SUM(z.mark) mark FROM 成绩表 z WHERE z.course != '语文' GROUP BY z.username
) b ON a.username = b.username
WHERE a.course = '语文'
好像是这样,纵转横嘛