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

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

軟件下載吧

當前位置:軟件下載吧 > 技術開發 > 數據庫 > 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香蕉国产线在线观看免费 | 免费一区二区三区在线视频 | 成人羞羞视频国产 | 亚洲高清视频在线播放 | 国产午夜精品理论片久久影视 | 一个人看的www日本高清视频 | 亚洲经典在线中文字幕 | 久久亚洲私人国产精品 | 99在线视频播放 | 免费播放美女一级毛片 | 国产亚洲福利精品一区二区 | 99久久国产综合精品1尤物 | 99re热视频这里只精品 | 亚洲综合在线另类色区奇米 | 一级床上爽高清播放 | 成人无遮挡毛片免费看 | 日韩中文字幕在线观看视频 | 日本一区二区高清免费不卡 | 一本色道久久99一综合 | 亚洲高清一区二区三区 | 亚洲欧洲国产成人综合一本 | 国产网站免费在线观看 | 免费欧美一级片 | 欧美毛片一级的免费的 | 国内高清久久久久久久久 | 久久久在线视频精品免费观看 | 亚洲国产人成中文幕一级二级 | 美美女高清毛片视频黄的一免费 | 91久久综合 | 欧美成人性动漫在线观看 | 成人中文字幕在线高清 | 91精品人成在线观看 | 成人综合国产乱在线 | 天天视频一区二区三区 | 香蕉tv亚洲专区在线观看 | 久久久久久免费观看 | 99久久免费看精品国产一区 | 国产高清美女一级a毛片久久 | 农村寡妇特一级毛片 |