在线观看 国产-在线高清一级欧美精品-在线高清国产-在线福利视频-久久观看视频-久久观看

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

軟件下載吧

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

PostgreSQL 實現將多行合并轉為列

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

需求將下列表格相同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:關鍵字]

相關下載

查看所有評論+

網友評論

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

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: 亚洲国产成人久久一区www妖精 | 亚洲精品乱码久久久久久v 亚洲国内精品 | 最近中文字幕最新在线视频 | 亚洲伊人成综合成人网 | 亚洲六月丁香六月婷婷色伊人 | 五月天婷婷丁香花 | a级毛片在线视频免费观看 9久视频 | 欧美日韩综合在线视频免费看 | 亚洲精品自拍视频 | 羞羞视频免费网站入口 | 亚洲人成电影网站色mp4下载 | 性欧美极品另类 | 色94色欧美一区 | 国产精品亚洲一区二区三区 | 日本成本人观看免费fc2 | 久久久久久亚洲精品中文字幕 | 欧美亚洲国产日韩一区二区三区 | 国产精品视屏 | 综合在线视频精品专区 | 亚洲视频国产精品 | 伊人丁香狠狠色综合久久 | 最新九九精品 | 亚洲成人综合在线 | 永久免费看www色视频 | 九九亚洲 | 小视频黄色 | 久久国内 | 日日人人 | 中文字幕avv | 欧美九九视频 | 欧美一区2区 | 欧美成人精品手机在线观看 | 亚洲专区一| 中文国产成人精品少久久 | 男人天堂伊人网 | 五月一区二区久久综合天堂 | 色婷婷六月天 | 久久久久久国产精品免费免 | 一区二区三区四区精品 | 国产精品视频免费的 | 亚洲精品98久久久久久中文字幕 |