婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PostgreSQL實現(xiàn)交叉表(行列轉(zhuǎn)換)的5種方法示例

PostgreSQL實現(xiàn)交叉表(行列轉(zhuǎn)換)的5種方法示例

熱門標簽:重慶自動外呼系統(tǒng)定制 打電話智能電銷機器人授權(quán) 漯河外呼電話系統(tǒng) 辦公外呼電話系統(tǒng) 外呼調(diào)研系統(tǒng) 海豐有多少商家沒有地圖標注 地圖標注和圖片名稱的區(qū)別 合肥公司外呼系統(tǒng)運營商 美容工作室地圖標注

交叉表

交叉表(Cross Tabulations)是一種常用的分類匯總表格。使用交叉表查詢,顯示源于表中某個字段的匯總值,并將它們分組,其中一組列在數(shù)據(jù)表的左側(cè),另一組列在數(shù)據(jù)表的上部。行和列的交叉處可以對數(shù)據(jù)進行多種匯總計算,如:求和、平均值、記數(shù)、最大值、最小值等。使用交叉表查詢數(shù)據(jù)非常直觀明了,被廣泛應(yīng)用。交叉表查詢也是數(shù)據(jù)庫的一個特點。

例如:

  select 表1.組名,
  (select 表1.成員姓名 from 表2 b where 表1.成員1id=表2.成員id) as 成員1id,
  (select 表1.成員姓名 from 表2 b where 表1.成員2id=表2.成員id) as 成員2id,
  (select 表1.成員姓名 from 表2 b where 表1.成員3id=表2.成員id) as 成員3id
  from 表1,表2
  --這種就是交叉表查詢

交叉報表是報表當中常見的類型,屬于基本的報表,是行、列方向都有分組的報表。這里牽涉到另外一個概念即分組報表。這是所有報表當中最普通,最常見的報表類型,也是所有報表工具都支持的一種報表格式。從一般概念上來講,分組報表就是只有縱向的分組。傳統(tǒng)的分組報表制作方式是把報表劃分為條帶狀,用戶根據(jù)一個數(shù)據(jù)綁定向?qū)е付ǚ纸M,匯總字段,生成標準的分組報表。

這里我來演示下在POSTGRESQL里面如何實現(xiàn)交叉表的展示,下面話不多說了,來一起看看詳細的介紹吧

原始表數(shù)據(jù)如下:

t_girl=# select * from score; 
 name | subject | score 
-------+---------+------- 
 Lucy | English | 100 
 Lucy | Physics | 90 
 Lucy | Math | 85 
 Lily | English | 95 
 Lily | Physics | 81 
 Lily | Math | 84 
 David | English | 100 
 David | Physics | 86 
 David | Math | 89 
 Simon | English | 90 
 Simon | Physics | 76 
 Simon | Math | 79 
(12 rows) 
 
 
Time: 2.066 ms 

想要實現(xiàn)以下的結(jié)果:

name | English | Physics | Math 
------+---------+---------+------ 
Simon |  90 |  76 | 79 
Lucy |  100 |  90 | 85 
Lily |  95 |  81 | 84 
David |  100 |  86 | 89 

大致有以下幾種方法:

1、用標準SQL展現(xiàn)出來

t_girl=# select name, 
t_girl-# sum(case when subject = 'English' then score else 0 end) as "English", 
t_girl-# sum(case when subject = 'Physics' then score else 0 end) as "Physics", 
t_girl-# sum(case when subject = 'Math' then score else 0 end) as "Math" 
t_girl-# from score 
t_girl-# group by name order by name desc; 
 name | English | Physics | Math 
-------+---------+---------+------ 
 Simon |  90 |  76 | 79 
 Lucy |  100 |  90 | 85 
 Lily |  95 |  81 | 84 
 David |  100 |  86 | 89 
(4 rows) 
 
 
Time: 1.123 ms 

2、用PostgreSQL 提供的第三方擴展 tablefunc 帶來的函數(shù)實現(xiàn)

以下函數(shù)crosstab 里面的SQL必須有三個字段,name, 分類以及分類值來作為起始參數(shù),必須以name,分類值作為輸出參數(shù)。

t_girl=# SELECT * 
FROM crosstab('select name,subject,score from score order by name desc',$$values ('English'::text),('Physics'::text),('Math'::text)$$) 
AS score(name text, English int, Physics int, Math int); 
 name | english | physics | math 
-------+---------+---------+------ 
 Simon |  90 |  76 | 79 
 Lucy |  100 |  90 | 85 
 Lily |  95 |  81 | 84 
 David |  100 |  86 | 89 
(4 rows) 
 
 
Time: 2.059 ms 

3、用PostgreSQL 自身的聚合函數(shù)實現(xiàn)

t_girl=# select name,split_part(split_part(tmp,',',1),':',2) as "English", 
t_girl-# split_part(split_part(tmp,',',2),':',2) as "Physics", 
t_girl-# split_part(split_part(tmp,',',3),':',2) as "Math" 
t_girl-# from 
t_girl-# ( 
t_girl(# select name,string_agg(subject||':'||score,',') as tmp from score group by name order by name desc 
t_girl(# ) as T; 
 name | English | Physics | Math 
-------+---------+---------+------ 
 Simon | 90  | 76  | 79 
 Lucy | 100  | 90  | 85 
 Lily | 95  | 81  | 84 
 David | 100  | 86  | 89 
(4 rows) 
 
 
Time: 2.396 ms 

4、 存儲函數(shù)實現(xiàn)

create or replace function func_ytt_crosstab_py () 
returns setof ytt_crosstab 
as 
$ytt$ 
 for row in plpy.cursor("select name,string_agg(subject||':'||score,',') as tmp from score group by name order by name desc"): 
  a = row['tmp'].split(',') 
  yield (row['name'],a[0].split(':')[1],a[1].split(':')[1],a[2].split(':')[1]) 
$ytt$ language plpythonu; 
 
 
t_girl=# select name,english,physics,math from func_ytt_crosstab_py(); 
 name | english | physics | math 
-------+---------+---------+------ 
 Simon | 90  | 76  | 79 
 Lucy | 100  | 90  | 85 
 Lily | 95  | 81  | 84 
 David | 100  | 86  | 89 
(4 rows) 
 
 
Time: 2.687 ms 

5、 用PLPGSQL來實現(xiàn)

t_girl=# create type ytt_crosstab as (name text, English text, Physics text, Math text); 
CREATE TYPE 
Time: 22.518 ms 
 
 
create or replace function func_ytt_crosstab () 
returns setof ytt_crosstab 
as 
$ytt$ 
 declare v_name text := ''; 
    v_english text := ''; 
  v_physics text := ''; 
  v_math text := ''; 
  v_tmp_result text := ''; 
 declare cs1 cursor for select name,string_agg(subject||':'||score,',') from score group by name order by name desc; 
begin 
 open cs1; 
 loop 
 fetch cs1 into v_name,v_tmp_result; 
 exit when not found; 
 v_english = split_part(split_part(v_tmp_result,',',1),':',2); 
 v_physics = split_part(split_part(v_tmp_result,',',2),':',2); 
 v_math = split_part(split_part(v_tmp_result,',',3),':',2); 
 return query select v_name,v_english,v_physics,v_math; 
 end loop; 
end; 
$ytt$ language plpgsql; 
 
 
t_girl=# select name,English,Physics,Math from func_ytt_crosstab(); 
 name | english | physics | math 
-------+---------+---------+------ 
 Simon | 90  | 76  | 79 
 Lucy | 100  | 90  | 85 
 Lily | 95  | 81  | 84 
 David | 100  | 86  | 89 
(4 rows) 
 
 
Time: 2.127 ms 

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • PostgreSQL 實現(xiàn)列轉(zhuǎn)行問題
  • PostgreSQL 實現(xiàn)將多行合并轉(zhuǎn)為列
  • postgresql高級應(yīng)用之行轉(zhuǎn)列&匯總求和的實現(xiàn)思路

標簽:晉城 烏海 株洲 來賓 錦州 珠海 蚌埠 衡陽

巨人網(wǎng)絡(luò)通訊聲明:本文標題《PostgreSQL實現(xiàn)交叉表(行列轉(zhuǎn)換)的5種方法示例》,本文關(guān)鍵詞  PostgreSQL,實現(xiàn),交叉表,行列,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PostgreSQL實現(xiàn)交叉表(行列轉(zhuǎn)換)的5種方法示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于PostgreSQL實現(xiàn)交叉表(行列轉(zhuǎn)換)的5種方法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    三级亚洲高清视频| 国产成人精品www牛牛影视| 麻豆视频观看网址久久| 久久99最新地址| 日韩欧美高清dvd碟片| 91国偷自产一区二区开放时间 | 精品视频999| 日韩欧美国产麻豆| 国产一区免费电影| 欧美精品久久99| 亚洲精品中文在线| 亚洲成av人在线观看| 亚洲在线成人精品| 五月天久久比比资源色| 亚洲自拍另类综合| 久久在线免费观看| 美日韩一区二区| 亚洲欧美区自拍先锋| 国产情人综合久久777777| 国产另类ts人妖一区二区| 国产91露脸合集magnet| 91精品国产综合久久久久久| 色婷婷国产精品综合在线观看| 欧美激情一区二区三区全黄| 日韩精品影音先锋| 国产精品一区二区免费不卡| 亚洲欧美国产毛片在线| 欧美一区二区三区人| 九九**精品视频免费播放| 国产大陆精品国产| 91丝袜美腿高跟国产极品老师| 亚洲精品视频自拍| 国产成人精品影视| 婷婷丁香激情综合| 欧美成人精品1314www| 亚洲精品一二三区| 91视频免费看| 黄页网站大全一区二区| 亚洲欧洲精品一区二区三区不卡| 国产黄色91视频| 日本aⅴ精品一区二区三区| 一区二区成人在线| 欧美系列一区二区| 日本成人在线电影网| 26uuu国产电影一区二区| 在线免费观看视频一区| 激情成人午夜视频| 国产不卡在线播放| 日韩视频在线一区二区| 青青草原综合久久大伊人精品| 欧美极品aⅴ影院| 91超碰这里只有精品国产| 三级精品在线观看| 久久国产三级精品| 精品一区二区三区日韩| 亚洲欧洲综合另类| 在线视频你懂得一区二区三区| 91视频在线观看| 亚洲超碰97人人做人人爱| 国产99久久久国产精品免费看| 色香蕉成人二区免费| 国产精品996| 欧美日韩aaaaa| 日本不卡123| 中文字幕日韩一区| 久久99久久精品欧美| 亚洲福利一二三区| 久久亚洲精精品中文字幕早川悠里| 国产成人av电影在线| 久久草av在线| 成人午夜私人影院| 91麻豆国产在线观看| 中文字幕精品一区二区三区精品| 欧美日韩国产在线观看| 欧美精品 日韩| 亚洲制服欧美中文字幕中文字幕| 丁香天五香天堂综合| 国产在线不卡一区| 欧美一区二区在线播放| 久久免费偷拍视频| 日本不卡不码高清免费观看| 欧美在线你懂的| 亚洲国产sm捆绑调教视频| 欧美不卡激情三级在线观看| 欧美国产日本视频| 狠狠色丁香久久婷婷综| 国产欧美一区二区三区网站| 国产麻豆日韩欧美久久| 美女视频黄频大全不卡视频在线播放| 在线影院国内精品| 国产激情一区二区三区桃花岛亚洲| 一个色综合网站| 国产精品一区二区三区乱码| 奇米影视一区二区三区| 三级精品在线观看| 欧美三级视频在线播放| 91视频www| 日韩欧美一级在线播放| 成人在线视频一区二区| 久久国产视频网| 国产欧美一区二区精品秋霞影院| 国产精品99久久久久久久女警 | 老司机免费视频一区二区| 伊人婷婷欧美激情| 亚洲伦理在线免费看| 久久久久久亚洲综合影院红桃| 一区二区久久久久久| 99精品视频一区二区| 不卡av在线免费观看| 国产一区二区美女诱惑| 色综合久久久久综合| 亚洲国产cao| 国产一区二区三区在线看麻豆| 色综合久久中文字幕| 欧美综合一区二区三区| 成人免费高清视频在线观看| 日日欢夜夜爽一区| 国产精品久久久久久亚洲毛片| 极品少妇xxxx精品少妇偷拍 | 国产一区二区三区久久悠悠色av| 波多野结衣亚洲| av成人免费在线| 欧美变态口味重另类| 99国产精品99久久久久久| 亚洲欧美日韩综合aⅴ视频| 99re热视频这里只精品| 精品亚洲国产成人av制服丝袜| 欧美日韩极品在线观看一区| 国产片一区二区| 91久久人澡人人添人人爽欧美| 国产成人午夜片在线观看高清观看| 欧美疯狂做受xxxx富婆| 91超碰这里只有精品国产| 中文字幕在线免费不卡| 成人的网站免费观看| 成人黄色av网站在线| 国产乱国产乱300精品| 欧美最新大片在线看| 日本不卡不码高清免费观看| 精品视频色一区| 欧美日韩亚洲综合一区| 国产一区二区三区久久悠悠色av| 精品乱码亚洲一区二区不卡| 97se狠狠狠综合亚洲狠狠| 波多野结衣中文一区| 欧美日韩一区二区在线视频| 亚洲激情自拍视频| 一区二区高清视频在线观看| 亚洲成av人综合在线观看| 亚洲电影在线免费观看| 亚洲欧洲日韩在线| 久久99国产精品免费网站| 久久精品国产亚洲一区二区三区| 中文字幕中文字幕在线一区| 亚洲国产日日夜夜| 亚洲精选免费视频| 色婷婷久久综合| www激情久久| 日韩视频不卡中文| 精品日韩一区二区| 国产福利一区二区三区视频| 中文字幕在线不卡一区二区三区| 日韩国产一二三区| 日韩免费高清av| 一区二区三区精密机械公司| 日韩不卡一区二区三区| 欧美日韩在线不卡| 久草精品在线观看| 国产亚洲一区二区三区四区 | 欧美国产日韩精品免费观看| 色88888久久久久久影院按摩| 一二三区精品视频| 99国产精品久久久久久久久久| 亚洲高清在线精品| 亚洲免费观看高清在线观看| 在线观看一区二区精品视频| gogogo免费视频观看亚洲一| 国产精品欧美一区喷水| 日韩精品一区二区三区在线观看 | 国产在线看一区| 中文字幕日韩欧美一区二区三区| 欧美一区二区三区精品| 一区二区三区四区激情| 亚洲免费观看高清| 国产乱码精品一区二区三区忘忧草 | 国产免费观看久久| 欧美亚洲国产bt| 粉嫩在线一区二区三区视频| 久久99九九99精品| 日韩av中文在线观看| 日韩欧美一区二区在线视频| 欧美日韩综合色| 日韩一区二区三区在线| 在线观看av一区二区| 91国在线观看| 欧美大胆一级视频| 91精品蜜臀在线一区尤物| 99vv1com这只有精品| 欧美肥胖老妇做爰| 亚洲午夜激情av|