国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換

這篇具有很好參考價(jià)值的文章主要介紹了GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、前言

二、簡(jiǎn)述

1、行轉(zhuǎn)列概念

2、列轉(zhuǎn)行概念

三、GaussDB數(shù)據(jù)庫(kù)的行列轉(zhuǎn)行實(shí)驗(yàn)示例

1、行轉(zhuǎn)列示例

1)創(chuàng)建實(shí)驗(yàn)表(行存表)

2)靜態(tài)行轉(zhuǎn)列

3)行轉(zhuǎn)列(結(jié)果值:拼接式)

4)動(dòng)態(tài)行轉(zhuǎn)列(拼接SQL式)

2、列轉(zhuǎn)行示例

1)創(chuàng)建實(shí)驗(yàn)表(復(fù)用前面的測(cè)試數(shù)據(jù))

2)使用union all,將各科目(數(shù)學(xué)、英語(yǔ)、語(yǔ)文)整合為一列

四、小結(jié)

一、前言

在構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)或做數(shù)據(jù)分析時(shí),需要對(duì)原始數(shù)據(jù)的結(jié)構(gòu)進(jìn)行一定的處理,有時(shí)涉及到“行轉(zhuǎn)列”,有時(shí)涉及到“列轉(zhuǎn)行”,那么這兩個(gè)轉(zhuǎn)換的方式具體是什么,有什么差異,怎么實(shí)現(xiàn),今天我們將以GaussDB數(shù)據(jù)庫(kù)為例,給大家做一下講解。

二、簡(jiǎn)述

1、行轉(zhuǎn)列概念

即將多行一列數(shù)據(jù)轉(zhuǎn)為一行多列顯示。通常轉(zhuǎn)化后將某一列分類(lèi)后的值作為新的列名,將此值對(duì)應(yīng)的多行數(shù)據(jù)顯示成一行。

GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換,GaussDB經(jīng)驗(yàn)總結(jié),數(shù)據(jù)庫(kù),gaussdb,sql,原力計(jì)劃

2、列轉(zhuǎn)行概念

即將一行多列數(shù)據(jù)轉(zhuǎn)成多行一列顯示。通常將轉(zhuǎn)化后的列名為某一行中某一列的值,來(lái)識(shí)別原先對(duì)應(yīng)的數(shù)據(jù)。

GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換,GaussDB經(jīng)驗(yàn)總結(jié),數(shù)據(jù)庫(kù),gaussdb,sql,原力計(jì)劃

三、GaussDB數(shù)據(jù)庫(kù)的行列轉(zhuǎn)行實(shí)驗(yàn)示例

用一張學(xué)生成績(jī)來(lái)舉例:從老師的角度,在錄入成績(jī)時(shí),每科老師都會(huì)單獨(dú)錄入每個(gè)學(xué)生的本科成績(jī)。而從學(xué)生的角度,學(xué)生只關(guān)心自己各科的成績(jī)分別是多少。所以如果把老師錄入數(shù)據(jù)作為原始表,那么學(xué)生查看自己的成績(jī)時(shí)就要用到行轉(zhuǎn)列,如果讓學(xué)生上報(bào)自己各科的成績(jī),然后老師去查對(duì)應(yīng)學(xué)科的學(xué)生考試成績(jī)時(shí),那就是列轉(zhuǎn)行了。

1、行轉(zhuǎn)列示例

1)創(chuàng)建實(shí)驗(yàn)表(行存表)

--創(chuàng)建實(shí)驗(yàn)表(行存表)
CREATE TABLE grade(
name VARCHAR(10)
,course VARCHAR(10)
,score INT);

--初始化測(cè)試數(shù)據(jù)
INSERT INTO grade VALUES ('張三','數(shù)學(xué)',80);
INSERT INTO grade VALUES ('張三','英語(yǔ)',88);
INSERT INTO grade VALUES ('張三','語(yǔ)文',95);
INSERT INTO grade VALUES ('李四','數(shù)學(xué)',88);
INSERT INTO grade VALUES ('李四','英語(yǔ)',70);
INSERT INTO grade VALUES ('李四','語(yǔ)文',93);

--查看結(jié)果
SELECT * FROM grade ORDER BY course;

GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換,GaussDB經(jīng)驗(yàn)總結(jié),數(shù)據(jù)庫(kù),gaussdb,sql,原力計(jì)劃

2)靜態(tài)行轉(zhuǎn)列

使用sum、case when的方式:

--靜態(tài)行轉(zhuǎn)列
SELECT name 
      ,sum(case when course = '數(shù)學(xué)' then score else 0 end) AS "數(shù)學(xué)"
      ,sum(case when course = '英語(yǔ)' then score else 0 end) AS 英語(yǔ)
      ,sum(case when course = '語(yǔ)文' then score else 0 end) AS 語(yǔ)文
FROM grade 
GROUP BY name;

GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換,GaussDB經(jīng)驗(yàn)總結(jié),數(shù)據(jù)庫(kù),gaussdb,sql,原力計(jì)劃

3)行轉(zhuǎn)列(結(jié)果值:拼接式)

使用listagg within group:

--行轉(zhuǎn)列(結(jié)果值:拼接式)
SELECT name, LISTAGG(score,',') WITHIN GROUP (ORDER BY course) FROM grade GROUP BY name;

GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換,GaussDB經(jīng)驗(yàn)總結(jié),數(shù)據(jù)庫(kù),gaussdb,sql,原力計(jì)劃

4)動(dòng)態(tài)行轉(zhuǎn)列(拼接SQL式)

通過(guò)“l(fā)istagg + 創(chuàng)建FUNCTION + VIEW”的方式實(shí)現(xiàn)

--動(dòng)態(tài)行轉(zhuǎn)列(SQL拼接式)
SELECT listagg(concat('SUM(CASE WHEN course = ''', course, ''' THEN score ELSE 0 END) AS "', course,'"'),',') WITHIN GROUP(ORDER BY 1) AS concat_text FROM (SELECT DISTINCT course FROM grade);

--concat_text的結(jié)果:
SUM(CASE WHEN course = '數(shù)學(xué)' THEN score ELSE 0 END) AS "數(shù)學(xué)",SUM(CASE WHEN course = '英語(yǔ)' THEN score ELSE 0 END) AS "英語(yǔ)",SUM(CASE WHEN course = '語(yǔ)文' THEN score ELSE 0 END) AS "語(yǔ)文"

--創(chuàng)建一個(gè)函數(shù)。
CREATE OR REPLACE FUNCTION fun_test()
RETURNS VOID
LANGUAGE SQL
AS $$ DECLARE
s_sql text;
rec record;
BEGIN        
    s_sql := 'SELECT listagg(CONCAT(''SUM(CASE WHEN course = '''''', course, '''''' THEN score ELSE 0 END) AS "'', course, ''"'' ),'','' ) WITHIN GROUP(ORDER BY 1) AS concat_text FROM (SELECT DISTINCT course FROM grade);'; 
    EXECUTE s_sql INTO rec;    
	s_sql := 'DROP VIEW IF EXISTS v_score; CREATE VIEW v_score AS SELECT name, ' || rec.concat_text || ' FROM grade GROUP BY name;';
	EXECUTE s_sql;
END $$;

--調(diào)用
CALL fun_test();

--查看執(zhí)行結(jié)果
select * from v_score;

GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換,GaussDB經(jīng)驗(yàn)總結(jié),數(shù)據(jù)庫(kù),gaussdb,sql,原力計(jì)劃

Tip:請(qǐng)注意SQL拼寫(xiě)時(shí)的英文單引號(hào)、雙引號(hào)。

2、列轉(zhuǎn)行示例

1)創(chuàng)建實(shí)驗(yàn)表(復(fù)用前面的測(cè)試數(shù)據(jù))

--創(chuàng)建實(shí)驗(yàn)表(復(fù)用前面的測(cè)試數(shù)據(jù))
CREATE TABLE grade1 AS 
SELECT name 
      ,sum(case when course = '數(shù)學(xué)' then score else 0 end) AS "數(shù)學(xué)"
      ,sum(case when course = '英語(yǔ)' then score else 0 end) AS 英語(yǔ)
      ,sum(case when course = '語(yǔ)文' then score else 0 end) AS 語(yǔ)文
FROM grade 
GROUP BY name;

--查看結(jié)果
SELECT * FROM grade1;

GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換,GaussDB經(jīng)驗(yàn)總結(jié),數(shù)據(jù)庫(kù),gaussdb,sql,原力計(jì)劃

2)使用union all,將各科目(數(shù)學(xué)、英語(yǔ)、語(yǔ)文)整合為一列

--使用union all,將各科目(數(shù)學(xué)、英語(yǔ)、語(yǔ)文)整合為一列
SELECT * FROM 
(
SELECT name, '數(shù)學(xué)' AS course, 數(shù)學(xué) AS score FROM grade1
union all
SELECT name, '英語(yǔ)' AS course, 英語(yǔ) AS score FROM grade1
union all
SELECT name, '語(yǔ)文' AS course, 語(yǔ)文  AS score FROM grade1
) 
order by name;

GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換,GaussDB經(jīng)驗(yàn)總結(jié),數(shù)據(jù)庫(kù),gaussdb,sql,原力計(jì)劃

四、小結(jié)

行列互轉(zhuǎn)在一些數(shù)據(jù)庫(kù)使用場(chǎng)景中經(jīng)常用到,比如數(shù)據(jù)分析、數(shù)倉(cāng)建設(shè)等。但不同的數(shù)據(jù)庫(kù)軟件有著不同處理方式,但是行列換的基本思路是一致的。本文主要是以GaussDB數(shù)據(jù)為平臺(tái),為大家做了簡(jiǎn)單的講述 ,歡迎測(cè)試。

——結(jié)束文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-689405.html

到了這里,關(guān)于GaussDB數(shù)據(jù)庫(kù)SQL系列-行列轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • GaussDB云數(shù)據(jù)庫(kù)SQL應(yīng)用系列-定時(shí)任務(wù)管理

    GaussDB云數(shù)據(jù)庫(kù)SQL應(yīng)用系列-定時(shí)任務(wù)管理

    前言 GaussDB數(shù)據(jù)庫(kù)定時(shí)任務(wù)主要可以用于實(shí)現(xiàn)定期的備份、統(tǒng)計(jì)信息采集、數(shù)據(jù)匯總、數(shù)據(jù)清理與優(yōu)化等,它是指在指定的時(shí)間間隔內(nèi)自動(dòng)執(zhí)行一次或多次SQL語(yǔ)句的程序。 GaussDB數(shù)據(jù)庫(kù)兼容Oracle定時(shí)任務(wù)功能主要通過(guò)DBE_TASK高級(jí)功能包提供的二次封裝接口實(shí)現(xiàn)(另可參見(jiàn)GaussD

    2024年02月08日
    瀏覽(90)
  • GaussDB云數(shù)據(jù)庫(kù)SQL應(yīng)用系列—分區(qū)表管理

    GaussDB云數(shù)據(jù)庫(kù)SQL應(yīng)用系列—分區(qū)表管理

    目錄 前言 一、分區(qū)表基本原理 二、分區(qū)表主要優(yōu)勢(shì) 三、分區(qū)表常見(jiàn)場(chǎng)景 四、GaussDB分區(qū)表管理(示例) 示例一:創(chuàng)建范圍分區(qū)表(RANGE) 示例二:創(chuàng)建哈希分區(qū)表(HASH) 示例三:創(chuàng)建列表分區(qū)(LIST) 五、總結(jié) 前言 本文將介紹GaussDB云數(shù)據(jù)庫(kù)的分區(qū)表技術(shù),包括原理、優(yōu)勢(shì)以

    2024年02月09日
    瀏覽(88)
  • GaussDB數(shù)據(jù)庫(kù)SQL系列-UNION & UNION ALL

    GaussDB數(shù)據(jù)庫(kù)SQL系列-UNION & UNION ALL

    目錄 一、前言 二、GaussDB? UNION/UNION ALL 1、GaussDB UNION 操作符 2、語(yǔ)法定義 三、GaussDB實(shí)驗(yàn)示例 1、創(chuàng)建實(shí)驗(yàn)表 2、合并且除重(UNION) 3、合并不除重(UNION ALL) 4、合并帶有WHERE子句SQL結(jié)果集(UNION ALL) 5、業(yè)務(wù)邏輯除重后合并(UNION ALL) 四、GaussDB UNION常見(jiàn)錯(cuò)誤 1、“each UNION que

    2024年02月12日
    瀏覽(89)
  • GaussDB高斯數(shù)據(jù)庫(kù)(SQL語(yǔ)法分類(lèi))

    GaussDB高斯數(shù)據(jù)庫(kù)(SQL語(yǔ)法分類(lèi))

    日常查詢(xún)中,最常用的是通過(guò)FROM子句實(shí)現(xiàn)的查詢(xún)。 語(yǔ)法格式:使用方法: SELECT [ , ... ] FROM table_reference [ , ... ] SELECT之后和FROM子句之前出現(xiàn)的表達(dá)式稱(chēng)為SELECT項(xiàng)。SELECT項(xiàng)用于指定要查詢(xún)的列,F(xiàn)ROM指定要從哪個(gè)表中查詢(xún)。如果要查詢(xún)所有列,可以在SELECT后面使用*號(hào),如

    2024年02月16日
    瀏覽(92)
  • GaussDB高斯數(shù)據(jù)庫(kù)(SQL語(yǔ)法入門(mén))

    GaussDB高斯數(shù)據(jù)庫(kù)(SQL語(yǔ)法入門(mén))

    DDL數(shù)據(jù)定于語(yǔ)言:用于定義或修改數(shù)據(jù)庫(kù)中的對(duì)象,如:表,索引,視圖,數(shù)據(jù)庫(kù),序列,用戶(hù),角色,表空間,會(huì)話(huà)等。 DDL不支持物化視圖,存儲(chǔ)過(guò)程,觸發(fā)器,自定義函數(shù),自定義類(lèi)型。 DML數(shù)據(jù)操作語(yǔ)言:用于對(duì)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)進(jìn)行操作,如插入,更新和刪除。 DCL數(shù)

    2023年04月10日
    瀏覽(98)
  • 揭示十年數(shù)據(jù)庫(kù)經(jīng)驗(yàn),告訴你如何輕松應(yīng)對(duì)常見(jiàn)問(wèn)題(SQL 小虛竹)

    揭示十年數(shù)據(jù)庫(kù)經(jīng)驗(yàn),告訴你如何輕松應(yīng)對(duì)常見(jiàn)問(wèn)題(SQL 小虛竹)

    回城傳送–》《數(shù)據(jù)庫(kù)問(wèn)題解決方案》 ??作者主頁(yè):小虛竹 ??作者簡(jiǎn)介:大家好,我是小虛竹。2022年度博客之星評(píng)選TOP 10??,Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,CSDN博客專(zhuān)家??,華為云享專(zhuān)家??,掘金年度人氣作者??,阿里云專(zhuān)家博主??,51CTO專(zhuān)家博主?? ??技術(shù)活,該賞 ?

    2023年04月18日
    瀏覽(48)
  • DBeaver連接華為高斯數(shù)據(jù)庫(kù) DBeaver連接Gaussdb數(shù)據(jù)庫(kù) DBeaver connect Gaussdb

    DBeaver連接華為高斯數(shù)據(jù)庫(kù) DBeaver連接Gaussdb數(shù)據(jù)庫(kù) DBeaver connect Gaussdb

    ? ????????華為GaussDB出來(lái)已經(jīng)有一段時(shí)間,最近工作中剛到Gauss數(shù)據(jù)庫(kù)。作為coder,那么如何通過(guò)可視化工具來(lái)操作Gauss呢? 本文將記錄使用 免費(fèi)、開(kāi)源的DBeaver 來(lái)連接Gauss 高斯數(shù)據(jù)庫(kù)。 ????????1、安裝Gauss數(shù)據(jù)庫(kù) ????????已經(jīng)安裝好的Gauss數(shù)據(jù)庫(kù)服務(wù)。參考地址:

    2024年02月16日
    瀏覽(22)
  • Spark【Spark SQL(二)RDD轉(zhuǎn)換DataFrame、Spark SQL讀寫(xiě)數(shù)據(jù)庫(kù) 】

    Spark【Spark SQL(二)RDD轉(zhuǎn)換DataFrame、Spark SQL讀寫(xiě)數(shù)據(jù)庫(kù) 】

    Saprk 提供了兩種方法來(lái)實(shí)現(xiàn)從 RDD 轉(zhuǎn)換得到 DataFrame: 利用反射機(jī)制推斷 RDD 模式 使用編程方式定義 RDD 模式 下面使用到的數(shù)據(jù) people.txt : ????????在利用反射機(jī)制推斷 RDD 模式的過(guò)程時(shí),需要先定義一個(gè) case 類(lèi),因?yàn)橹挥?case 類(lèi)才能被 Spark 隱式地轉(zhuǎn)換為DataFrame對(duì)象。 注意

    2024年02月09日
    瀏覽(26)
  • 【GaussDB數(shù)據(jù)庫(kù)】序

    【GaussDB數(shù)據(jù)庫(kù)】序

    參考鏈接1:國(guó)產(chǎn)數(shù)據(jù)庫(kù)華為高斯數(shù)據(jù)庫(kù)(GaussDB)功能與特點(diǎn)總結(jié) 參考鏈接2:GaussDB(DWS)介紹 官方網(wǎng)站:云數(shù)據(jù)庫(kù)GaussDB GaussDB是華為自主創(chuàng)新研發(fā)的分布式關(guān)系型數(shù)據(jù)庫(kù)。該產(chǎn)品支持分布式事務(wù),同城跨AZ部署,數(shù)據(jù)0丟失,支持1000+的擴(kuò)展能力,PB級(jí)海量存儲(chǔ)。 同時(shí)擁有云上高

    2024年01月18日
    瀏覽(24)
  • GaussDB數(shù)據(jù)庫(kù)事務(wù)介紹

    GaussDB數(shù)據(jù)庫(kù)事務(wù)介紹

    目錄 一、前言 二、GaussDB事務(wù)的定義及應(yīng)用場(chǎng)景 三、GaussDB事務(wù)的管理 四、GaussDB事務(wù)語(yǔ)句 五、GaussDB事務(wù)隔離 六、GaussDB事務(wù)監(jiān)控 七、總結(jié) 隨著大數(shù)據(jù)和互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,數(shù)據(jù)庫(kù)管理系統(tǒng)的作用越來(lái)越重要,實(shí)現(xiàn)數(shù)據(jù)的快速讀寫(xiě)以及保證數(shù)據(jù)的安全性和完整性成為企業(yè)

    2023年04月26日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包