select * from vmark1;+-----+--------+--------+------+| sid |..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mysql需求場(chǎng)景-列轉(zhuǎn)行

發(fā)布時(shí)間:2020-07-26 21:16:16 來(lái)源:網(wǎng)絡(luò) 閱讀:3101 作者:spihiker 欄目:MySQL數(shù)據(jù)庫(kù)

由于是模擬場(chǎng)景,直入主題,表名稱及結(jié)構(gòu)定義很low,請(qǐng)忽視!

(1)現(xiàn)有學(xué)生分?jǐn)?shù)表如下:
mysql> select * from vmark1;
+-----+--------+--------+------+
| sid | sname | course | mark |
+-----+--------+--------+------+
| 1 | 張三 | jsj | 90 |
| 1 | 張三 | yuwen | 65 |
| 1 | 張三 | yingyu | 80 |
| 2 | 李四 | jsj | 80 |
| 2 | 李四 | yuwen | 98 |
| 2 | 李四 | yingyu | 90 |
+-----+--------+--------+------+
6 rows in set (0.00 sec)

(2)需求是以更直觀的方式,查看學(xué)生的成績(jī)。細(xì)化也就是把mark這列的值,以行的形式展示。通過(guò)case..when語(yǔ)句查詢:
mysql> select sid,sname,case when course='jsj' then mark end jsj,case when course='yuwen' then mark end yuwen,case when course='yingyu' then mark end yingyu from vmark1;
+-----+--------+------+-------+--------+
| sid | sname | jsj | yuwen | yingyu |
+-----+--------+------+-------+--------+
| 1 | 張三 | 90 | NULL | NULL |
| 1 | 張三 | NULL | 65 | NULL |
| 1 | 張三 | NULL | NULL | 80 |
| 2 | 李四 | 80 | NULL | NULL |
| 2 | 李四 | NULL | 98 | NULL |
| 2 | 李四 | NULL | NULL | 90 |
+-----+--------+------+-------+--------+
6 rows in set (0.01 sec)

我靠,變成行了。但看起來(lái)依然很不友好!

(3)通過(guò)函數(shù)和group by字句優(yōu)化:
mysql> select sid,sname,sum(case when course='jsj' then mark end) jsj,sum(case when course='yuwen' then mark end) yuwen,sum(case when course='yingyu' then mark end) yingyu from vmark1 group by sid;
+-----+--------+------+-------+--------+
| sid | sname | jsj | yuwen | yingyu |
+-----+--------+------+-------+--------+
| 1 | 張三 | 90 | 65 | 80 |
| 2 | 李四 | 80 | 98 | 90 |
+-----+--------+------+-------+--------+
2 rows in set (0.00 sec)

“哇塞,要的就是這效果。別動(dòng)了。。就這樣”。運(yùn)營(yíng)妹子激動(dòng)的說(shuō)。

好吧。over.

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI