日韩av手机在线免费观看_四虎免看黄_亚洲一区中文字幕_亚洲小视频网站_国产一区日韩在线_国产欧美精品一区二区

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

軟件下載吧

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

PostgreSQL 實現將多行合并轉為列

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

需求將下列表格相同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 | 中文在线一区二区 | 中文字幕精品一区二区三区精品 | 欧美video | 日本亚洲精品 | 日本亚洲精品成人欧美一区 | 国产综合视频 | 国产一区二区在线视频 | 成人av激情| 成人影院一区二区三区 | 人人干人人干人人 | 黄视频免费 | 午夜激情视频 | 91麻豆精品国产91久久久久久 | 欧美精品在线免费观看 | 久久精品国产一区二区电影 | 亚洲精品亚洲人成人网 | 精品综合网| 国产欧美精品一区二区 | 久久久久久久国产 | 亚洲男人网| 日韩欧美高清 | 密室大逃脱第六季大神版在线观看 | 亚洲日韩中文字幕一区 | 亚洲一区久久 | 国产在线资源 | 久久高清 | 亚洲国产欧美一区 | 欧美一区二区在线观看视频 | 国产乱码精品一区二区三区中文 | av在线播放一区二区 | 欧美小视频在线观看 | 在线精品一区二区 | 免费在线毛片 | 成人免费观看视频 | 免费看国产一级特黄aaaa大片 | h视频在线免费 | 在线国产一区 |