日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

sql两个数字之差取最接近的_从零学DAX/Sql/Python030203SQL数据分类汇总续篇

發布時間:2024/10/8 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql两个数字之差取最接近的_从零学DAX/Sql/Python030203SQL数据分类汇总续篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊“數字化審計”,可以關注哦!

開篇啰嗦話

上篇文章,為你介紹了SQL語句中select 的group by參數進行分類統計,group by在審計數據分析過程中是必然繞不開的。因為,你必然離不開各種匯總計算,例如,不同產品的采購額、銷售額,不同年度的不同客戶的合同額,等等,其中,提到了with cube 和with rollup兩個參數,今天繼續為你補充。

從零學DAX/Sql/Python之SQL篇文章索引

1

SQL系列-01-數據庫及SQL Server基本操作

2

SQL系列-02-SQL Server基本介紹及SSMS

3

SQL系列-03-SQL與Python集成編輯工具ADS

4

SQL系列-04-Select語法、別名、概覽數據

5

SQL系列-05-SQL數據分類匯總

6

上表中前3篇文章,對數據庫及其操作、操作數據庫的工具SSMS和Azure Data Studio 進行了介紹,如果你要跟著學習SQL,請務必閱讀!微軟的SQLServer官方教程提供了T-SQL語法詳細介紹:

https://docs.microsoft.com/zh-cn/sql/t-sql/language-reference?view=sql-server-ver15

再談group by 參數with rollup/cube

上篇文章中為你介紹了group by 及其參數with rollup/cube的基本用法。在實際工作中,我們往往需要添加“小計”和“總計”,如下圖所示。

上圖可以看出:

(1)group by?年度,公司名稱:僅能匯總不同年度、不同公司的聚合值;

(2)group by 年度,公司名稱?with?rollup:還能匯總每個年度全部公司的聚合值,及所有年度全部公司的聚合值。而無法匯總每個公司全部年度的聚合值(這個得用group by 公司名稱,年度 with rollup)

(3)group?by?年度,公司名稱?with?cube:在with rollup的基礎上還能匯總每個公司全部年度。也就是說,

group?by?年度,公司名稱?with?cube=

group?by?年度,公司名稱?with?rollup??+

group?by?公司名稱,年度?with?rollup

但是,在上篇文章中,并未顯示小計和合計,在小計和合計的地方均顯示為null-空值。

這是如何做到的呢?這就需要為你介紹sql中的一個條件判斷CASE WHEN語句:

條件判斷語句CASE?When?Then?else?endCASE WHEN條件判斷語句語法格式:

case??when?條件1? then?結果1

? ? ? ? ?when?條件2??then?結果2

?? ? ? ??......

?? ? ? ??when 條件n??then 結果n

? ? ? ? ?else?結果m

end

表達的含義是:當滿足條件1時,返回結果1,...,如果最終沒有匹配的條件,就返回結果m。

其詳細語法及介紹可參見微軟官網:

https://docs.microsoft.com/zh-cn/sql/t-sql/language-elements/case-transact-sql?view=sql-server-ver15

下面顯示了不同招標方式,并且將“目錄采購自動匹配”、“公開招標”、"邀請招標"三種招標方式歸為“招標”、其余招標方式均歸為“未招標”,sql代碼如下:

SELECT?distinct?[招標方式]
??FROM?[samples].[dbo].[采購明細]
GO
---case?when?根據不同的條件,返回不同的結果
SELECT?distinct?[招標方式],
'招標分類'=case?when?a.招標方式?='目錄采購自動匹配'?then?'招標'?
???????????????when?a.招標方式?='公開招標'?then?'招標'
???????????????when?a.招標方式?='邀請招標'?then?'招標'
???????????????else?'未招標'
??????????end?????????
FROM?[samples].[dbo].[采購明細]?a

sql代碼及其結果如下圖所示。

下面是審計確定應招未招的一個假定定義。其SQL語句為:

---應招未招:招標方式不是目錄采購自動匹配、公開招標、邀請招標,且金額大于1萬
SELECT?a.訂單號,a.招標方式,a.金額,
'審計認定的招標類型'=case?when?a.招標方式?='目錄采購自動匹配'?then?'應招已招'?
???????????????when?a.招標方式?='公開招標'?then?'應招已招'
???????????????when?a.招標方式?='邀請招標'?then?'應招已招'
???????????????else?
???????????????????(case?when?a.金額>10000?then?'應招未招'?
?????????????????????else?'可不招'?end)
??????????end
FROM?[samples].[dbo].[采購明細]?a

SQL語句運行結果如下圖,然后只需篩選出“應招未招”的采購訂單。

Tips! ?當然,實際工作中判定應招未招的條件會更加復雜,這就涉及到更加復雜的邏輯運算,后面會繼續補充!

再談group by?with rollup/cube中的小計與合計

掌握了上述case when 語句后,就可以對group by with rollup/cube的結果中的null值,顯示小計和合計字樣。

SQL代碼如下所示:---對group?by?進行with?rollup后的結果,增加小計和合計
---年度列如果是空值null,則年度列所在的單位格顯示總計
---年度列不是空值null,并且公司名稱列是空值null,則單元格顯示小計
select?
case?when?cgmx.年度?is?null?then?'總計'?else?cgmx.年度?end?'年度',
case?when?cgmx.年度?is?not?null??and?cgmx.公司名稱?is?null?then?'小計'
?????????else?cgmx.公司名稱?end?'公司名稱',
count(cgmx.訂單號)?as?訂單數
,sum(cgmx.金額)?as?采購金額?from?[samples].[dbo].[采購明細]?cgmx
group?by?cgmx.年度,cgmx.公司名稱??with?rollup

SQL語句運行結果如下圖

動態顯示group by的結果

在審計工作中,我們不僅需要按照不同維度,運用group by來查看各種統計數據,而且往往會需要以圖形的形式進行展示,以增加感官認識。

但是,傳統的圖型展示只能是靜態的,例如,在excel中,如果需要顯示不同年度的所有公司采購額和采購數量的構成,通常的做法,只能一年做一個餅圖。如果需要顯示不同公司的所有年度的采購額和采購數量變化趨勢,通常的做法,只能一個公司做一個直線圖。

但是,python中的pyechart包給出了一個新奇的解決方案-運用時間線的概念,可以完美的解決這個動態需要

下圖顯示了2016年三家公司采購額和采購量構成情況,當你滑動底部時間線,你會可以看到2017、2018年的構成情況。

一條線、一個頁面同時承載了不同年度的顯示!

下面給出動畫效果圖

怎么樣,你是否心動了!

這要感謝pyecharts的作者之一chenjiandongx,他給與我很多的解惑。https://github.com/chenjiandongx。

這就是python的強大之處,如前我多次提到:我學習和研究python的最主要原因不是用它來清洗、處理數據,這些用excel和sql基本可以搞定,而是用它來解決excel、sql往往很難解決的問題,這個就是其中之一!

關于上述效果的代碼我會在下下篇文章中予以介紹,它屬于python的范疇。

下一篇我會介紹python包安裝及管理的技巧,這是很多初學者最容易忽視也是最令人抓狂的問題。有了這個鋪墊后,再為你介紹這個動畫的代碼!

隨著輕輕的風輕輕地飄

歷經的路都會刻骨銘心

如果你覺得有用,記得點擊右下角“在看”按鈕,并寫下寶貴的意見,也可在公眾號下掃碼加群

欲見詳情,靜候下文

原創文章歡迎轉載!

請注明:本文首發于

"數字化審計"公眾號

總結

以上是生活随笔為你收集整理的sql两个数字之差取最接近的_从零学DAX/Sql/Python030203SQL数据分类汇总续篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。