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

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

軟件下載吧

當前位置:軟件下載吧 > 技術開發 > 數據庫 > 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:關鍵字]

相關下載

查看所有評論+

網友評論

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

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: 日本在线观看免费视频网址 | 国产17部性孕妇孕交在线 | 亚洲精品成人中文网 | 日本精品视频在线播放 | 亚洲欧美综合久久 | 国产蜜汁tv福利在线 | 久久精品亚洲乱码伦伦中文 | 永久黄网站色视频免费网站 | 美女视频网站黄色 | 日本免费视频观看在线播放 | 日韩欧一级毛片在线播无遮挡 | 在线视频中文 | 成人1000部免费观看视频 | 亚洲综合久久久久久中文字幕 | 亚洲国产成+人+综合 | 国产成人亚洲合集青青草原精品 | 亚洲男人第一天堂 | 草草影院www色欧美极品 | 亚洲天堂久久久 | 精品日韩在线视频一区二区三区 | 久久国产亚洲精品 | 国产高清在线精品 | 国产亚洲一欧美一区二区三区 | 天天五月天丁香婷婷深爱综合 | 最新日韩欧美不卡一二三区 | 性欧美巨大的视频 | 色毛片 | 毛片免费的 | 亚洲高清成人欧美动作片 | 国产一国产a一级毛片 | 成人软件网18免费视频 | 日韩免费观看一级毛片看看 | 伊人久热这里只有精品视频99 | 国产香蕉成人综合精品视频 | 欧美成人怡红院在线观看 | 黄色三级免费网站 | 久久亚洲不卡一区二区 | 日韩 欧美 自拍 | 国产福利在线91 | 日韩特级片 | 一级毛片成人免费看免费不卡 |