mysql maxcase when_MySQL -- 行转列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)

本文介绍了MySQL中如何使用MAX(CASE WHEN THEN)进行列转行操作,展示学生各科成绩;同时讲解了GROUP_CONCAT函数在合并字段显示时的应用,包括去重和排序。还提供了面试题,如计算各班级及格人数的方法,以及两种不同的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列转行:利用max(case when then)

934b5b33da02cd704789201047ac3ae3.png

SELECT`name`,MAX(CASE

WHEN course='语文' THENscoreEND)AS语文,MAX(CASE

WHEN course='数学' THENscoreEND)AS数学,MAX(CASE

WHEN course='英语' THENscoreEND)AS英语FROMstudentGROUP BY`name`

;

88dfec31b36ea881a44b2b22ba590fa8.png

合并字段显示:利用group_cancat(course,”:”,”score”)

SELECT`name`,

GROUP_CONCAT(course, ":", score)AS成绩FROMstudentGROUP BY`name`;

96ec7dfdd044c0d5af6418cb24cbbfb7.png

-- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -

--合并字段显示 : 去重、排序

SELECT rid,GROUP_CONCAT(DISTINCT gid ORDER BYgid)FROMgt_lighting.res_lightsGROUP BY rid;

4f9ae64affd56cc0e4ffd6798c0b8971.png

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

多来点面试题:

0474a2c1bee1b1a20957f0740912cef1.png

计算各班级及格人数:

SELECT class,SUM(CASE WHEN score >= 60 THEN 1 END) AS '及格',SUM(CASE WHEN score < 60 THEN 1 END) AS '不及格'

FROMgradeTableGROUP BY class;

或者:

SELECT succ.class,succ.su AS '及格',fail.fa AS '不及格'FROM

(

SELECTclass,COUNT(1) AS su

FROM gradeTable

WHERE score>= 60GROUP BYclass) AS succ,

(

SELECTclass,COUNT(1) AS fa

FROM gradeTable

WHERE score< 60GROUP BYclass) AS fail

WHERE succ.class = fail.class;

Console :

91e1e3f870a59a62897fd23609ac3e6f.png

啦啦啦

啦啦啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值