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

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

軟件下載吧

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

相關下載

查看所有評論+

網友評論

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

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: 免费观看国产网址你懂的 | 国产成人久久一区二区三区 | 日本卡一卡2卡3卡4精品卡无人区 | 日本一级特黄毛片高清视频 | 男人的天堂欧美 | 精品综合久久久久久99 | 精品一区二区三区五区六区 | 欧美一级欧美一级高清 | 久久国产精品最新一区 | 青青草福利视频 | 特级毛片全部免费播放a一级 | 99久久精品免费精品国产 | 成人三级视频在线观看 | 国产男女视频 | 成年人免费大片 | 久久久毛片免费全部播放 | 欧美一级毛片免费看高清 | 久久久久久尹人网香蕉 | 免费观看性欧美毛片 | 欧美精品色精品一区二区三区 | 欧美亚洲另类久久综合 | 看一级特黄a大片日本片 | 欧美一级录像 | 亚洲国产三级 | 免费看欧美一级特黄a大片一 | 日韩精品网址 | 国产2021中文天码字幕 | 日韩欧美久久一区二区 | 亚洲综合久久久久久888 | 91色综合综合热五月激情 | 久久久久久久99久久久毒国产 | 国产亚洲综合精品一区二区三区 | 国产私拍福利精品视频推出 | a级成人毛片免费视频高清 a级高清观看视频在线看 | 麻豆一级片 | 精品国产免费第一区二区三区日韩 | 91久久香蕉国产线看观看软件 | 成人在线观看国产 | 日本www色视频成人免费网站 | 在线视频欧美亚洲 | 理伦毛片 |