軟體開發高手必須掌握的4大SQL精髓語句(一)

2021-09-30 15:29:50 字數 3224 閱讀 5152

軟體開發高手必須掌握的4大sql精髓語句(一)

馬根峰( 廣東聯合電子收費股份****, 廣州 510300)

作者部落格:

csdn部落格:

qq空間:

0

引言隨著計算機在社會各領域應用的深入,軟體開發人員不得不面臨著或多或少的資料處理、資料庫訪問。

在sql(structured query language)語言dml中,有四大語句堪稱其精髓部分。下面就講述一下其中之一, case when 語句的用法。本文介紹用它實現資料倉儲中的維度轉換,來將資料展現給分析人員來進行決策支援與分析。

case whenconition

then 。。。

else。。。

end

1

資料倉儲中的維度轉換

在資料倉儲資料展現中,我們通常要用到將資料表進行維度轉換。如資料倉儲中某一關係模式

vehsm (roadno, year , fluxcount,。。。)

vehcount_trans (roadno, year fluxcount 1, .。。。, year fluxcount n)

下面筆者就分別以case when語句、brioquery來分別演示一下如何實現維度轉換。

2

case when

語句來實現

維度轉換

下面就以db2資料庫為例,以「萬能資料庫查詢分析器」 中文版本《db 查詢分析器》、英文版本《db query analyzer》作為客戶端工具來來演示一下case when 語句如何實現維度轉換。

select

uu.roadno,rr.roadname,

sum(

case

when

uu.year

=2009

then

uu.fluxcount

else

0end

) as

year_2009,

sum(

case

when

uu.year

=2010

then

uu.fluxcount

else

0end

) as

year_2010,

sum(

case

when

uu.year

=2011

then

uu.fluxcount

else

0end

) as

year_2011

from (

select

roadno,

year

(squaddate)

asyear

,sum

(fluxcount)

asfluxcount

from

tb_adfluxcolt

where

squaddate

between

'2009-01-01'

and'2011-12-31'

andoiflag=0

group

byroadno,

year

(squaddate)

) uu,(

select

distinct

roadno,roadname

from

tb_road

where

status

=0and

level

in(0,1)

androadname

notlike

'%南部快速

圖1db 查詢分析器中輸入要執行的case when語句

圖2db 查詢分析器執行case when語句

圖3db query analyzer 中輸入要執行的case when語句

圖4db query analyzer 執行case when語句

3

brioquery

來實現維度轉換

在資料倉儲工具中,brioquery提供了比較強大的資料展現功能,能方便地實現上面的維度轉換。

圖5brioquery資料表 vehsm

圖6brioquery執行查詢後的結果

圖7brioquery維度轉換後的結果

但對於大資料量表的維度轉換來說,則幾乎無法完成,筆者在中文核心刊物《電信科學》2023年11期《廣東電信公話200專用話機話務動態分析系統的構建》文章中,詳細地介紹了「廣東電信公話200專用話機話務動態分析系統」中是如何實現這一點的,這個話務動態系統是自己以前在廣東省電信****工作的時候獨自開發的,有興趣的話,可以看

本人的csdn部落格的博文:

「廣東電信公話200專用話機話務動態分析系統的構建」

/article/details/

7691403

軟體開發高手須掌握的4大SQL精髓語句(一)

軟體開發高手須掌握的4大sql精髓語句 一 馬根峰 廣東聯合電子收費股份 廣州 510300 作者部落格 csdn部落格 qq空間 0 引言隨著計算機在社會各領域應用的深入,軟體開發人員不得不面臨著或多或少的資料處理 資料庫訪問。在sql structured query language 語言dm...

軟體開發必須的文件

軟體 文件 程式 資料。我認為文件是軟體的核心。沒有文件,開發的程式將會很粗糙,而且難於維護,這樣的軟體是沒有生命力的。文件是依據軟體的階段而產生的。根據軟體開發的幾個階段 專案開發計畫,軟體需求定義,軟體總體設計,軟體編碼設計,軟體測試計畫,軟體執行與維護。文件階段 可行性研究,專案開發計畫,軟體...

嵌入式軟體開發 必須掌握的知識點(二)

1 嵌入式系統的主要組成部分 1 硬體裝置 2 嵌入式作業系統 3 應用軟體 2 一條語句實現 判斷乙個數x為2的 n 次冪 if x x 1 0 3 linux系統的裝置分類 1 字元裝置 2 塊裝置 3 網路裝置 4 c語言運算子優先順序 同一優先順序的運算子,運算次序由結合方向所決定。優先順序...