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

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

軟件下載吧

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

相關下載

查看所有評論+

網友評論

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

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: a级免费网站 | 久久精品视频2 | 草免费视频| 亚州色吧 | 手机看片国产免费久久网 | 国产成人亚洲精品一区二区在线看 | 自拍偷拍视频在线观看 | 91日本在线观看亚洲精品 | 日本高清aⅴ毛片免费 | 欧美日韩一区二区在线 | 免费成年人视频网站 | 亚洲一区二区三区四区五区六区 | 很黄很色的免费视频 | 日韩亚洲精品不卡在线 | 国产精品久久久 | 欧美做爰xxxⅹ性欧 欧美做爰免费大片在线观看 | 成人午夜大片免费看爽爽爽 | 男女男在线精品网站免费观看 | 成人高清视频在线观看 | 91视频国产91久久久 | 爱啪网亚洲第一福利网站 | 鲁老汉精品视频在线观看 | 嫩草一区二区三区四区乱码 | 亚洲综合色吧 | 99久久精品国产综合一区 | 欧美精品另类 | 亚洲香蕉久久一区二区三区四区 | 国产女女视屏免费 | 欧美一级毛片免费大片 | 女子张开腿让男人桶视频 | 京野结衣免费一区二区 | 亚洲精品综合一区二区 | 日韩国产欧美在线观看一区二区 | 性刺激免费视频观看在线观看 | 亚洲国产精品免费在线观看 | 精品一区二区三区在线视频观看 | 欧美高清性刺激毛片 | 国产一线视频在线观看高清 | 亚洲网站黄色 | 亚洲欧美日本国产综合在线 | 波多野结衣视频免费观看 |