日韩小视频-日韩久久一区二区三区-日韩久久一级毛片-日韩久久久精品中文字幕-国产精品亚洲精品影院-国产精品亚洲欧美云霸高清

下載吧 - 綠色安全的游戲和軟件下載中心

軟件下載吧

當前位置:軟件下載吧 > 技術開發 > 數據庫 > PostgreSQL 實現將多行合并轉為列

PostgreSQL 實現將多行合并轉為列

時間:2024-02-21 13:55作者:下載吧人氣:15

需求將下列表格相同id的name拼接起來輸出成一列

id Name
1 peter
1 lily
2 john

轉化后效果:

id Name
1 peter;lily
2 john;

實現方式使用 array_to_string 和 array_agg 函數,具體語句如下:

string_agg(expression, delimiter) 把表達式變成一個數組

string_agg(expression, delimiter) 直接把一個表達式變成字符串

select id, array_to_string( array_agg(Name), ‘;’ ) from table group by id

補充:Postgresql實現動態的行轉列

問題

在數據處理中,常遇到行轉列的問題,比如有如下的問題:

有這樣的一張表

“Student_score”表:

姓名 課程 分數
張三 數學 83
張三 物理 93
張三 語文 80
李四 語文 74
李四 數學 84
李四 物理 94

我們想要得到像這樣的一張表:

姓名 數學 物理 語文
李四 84 94 74
張三 83 93 80

當數據量比較少時,我們可以在Excel中使用數據透視表pivot table的功能實現這個需求,但當數據量較大,或者我們還需要在數據庫中進行后續的數據處理時,使用數據透視表就顯得不那么高效。

下面,介紹如何在Postgresql中實現數據的行轉列。

靜態寫法

當我們要轉換的值字段是數值型時,我們可以用SUM()函數:

CREATE TABLE Student_score(姓名 varchar, 課程 varchar, 分數 int);
INSERT INTO Student_score VALUES(‘張三’,’數學’,83);
INSERT INTO Student_score VALUES(‘張三’,’物理’,93);
INSERT INTO Student_score VALUES(‘張三’,’語文’,80);
INSERT INTO Student_score VALUES(‘李四’,’語文’,74);
INSERT INTO Student_score VALUES(‘李四’,’數學’,84);
INSERT INTO Student_score VALUES(‘李四’,’物理’,94);
select 姓名
,sum(case 課程 when ‘數學’ then 分數 end) as 數學
,sum(case 課程 when ‘物理’ then 分數 end) as 物理
,sum(case 課程 when ‘語文’ then 分數 end) as 語文
from Student_score
GROUP BY 1

標簽[db:關鍵字]

相關下載

查看所有評論+

網友評論

網友
您的評論需要經過審核才能顯示

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: 九九色网 | 亚洲第四页| 欧美精品一区视频 | 中国老太卖淫播放毛片 | 亚洲精品日本 | 精品91精品91精品国产片 | 国产90后美女露脸在线观看 | 免费v片视频在线观看视频 免费v片在线观看 | 全部免费的毛片在线看美国 | 在线 | 一区二区三区 | 一级做a爰片久久毛片鸭王 一级做a爰全过程免费视频毛片 | 色综合美国色农夫网 | 久久精品一区二区三区中文字幕 | 精品自拍一区 | 久久久久无码国产精品一区 | 免费国产a国产片高清 | 亚洲国产激情在线一区 | 国产欧美日韩精品在线 | 国产成人精品综合久久久软件 | 国产精品视频免费 | 高清不卡日本v在线二区 | 三级带黄色 | 国产成人福利美女观看视频 | 国产www| 亚洲高清色 | 亚洲精品人成网线在线 | 韩国免费播放一级毛片 | 中文字幕在线看视频一区二区三区 | 黄网址在线看 | 在线播放精品一区二区啪视频 | 日本成人免费在线视频 | 精品日韩欧美一区二区三区在线播放 | 99久久免费午夜国产精品 | 91免费网站在线看入口黄 | 综合久 | 农村寡妇野外情一级毛片 | 在线成人免费视频 | 黄色香蕉视频 | 日产乱码精品一二三区 | 免费人成在线观看 | 欧美日韩亚洲高清不卡一区二区三区 |