行數(shù) | 訂單價格 | sum值 |
---|---|---|
第一行 | 10.00 | 10.00 |
第二行 | 20.00 | 30.00 |
第三行 | 30.00 | 60.00 |
第四行 | 40.00 | 100.00 |
第五行 | 50.00 | 150.00 |
第...行 | ... | ... |
第十行 | 100.00 | 550.00 |
假設(shè)有下面一張表(Delivery),表結(jié)構(gòu)如下:
+-----------------------------+---------+ | Column Name | Type | +-----------------------------+---------+ | delivery_id | int | | customer_id | int | | order_date | date | | customer_pref_delivery_date | date | | order_money | decimal | +-----------------------------+---------+
delivery_id 是表的主鍵。
該表保存著顧客的食物配送信息,顧客在某個日期下了訂單,并指定了一個期望的配送日期(和下單日期相同或者在那之后)。如果顧客期望的配送日期和下單日期相同,則該訂單稱為 「即時訂單」,否則稱為「計(jì)劃訂單」。
里面有如下數(shù)據(jù):
+-------------+-------------+------------+-----------------------------+-------------+ | delivery_id | customer_id | order_date | customer_pref_delivery_date | order_money | +-------------+-------------+------------+-----------------------------+-------------+ | 1 | 1 | 2019-08-01 | 2019-08-02 | 1.23 | | 2 | 5 | 2019-08-02 | 2019-08-02 | 1.01 | | 3 | 1 | 2019-08-11 | 2019-08-11 | 1.09 | | 4 | 3 | 2019-08-24 | 2019-08-26 | 1.00 | | 5 | 4 | 2019-08-21 | 2019-08-22 | 10.00 | | 6 | 2 | 2019-08-11 | 2019-08-13 | 12.09 | +-------------+-------------+------------+-----------------------------+-------------+
實(shí)例一
統(tǒng)計(jì)出該表中所有的訂單總金額。這里就很簡單了,也是我們常用的使用方式,直接sum()參數(shù)填寫某一個列就行了。按照上面的語法規(guī)則應(yīng)該是一個表達(dá)式,實(shí)際上一列也是一個表達(dá)式。
select sum(order_money) from Delivery;
實(shí)例二
寫一條 SQL 查詢語句獲取即時訂單所占的百分比, 保留兩位小數(shù)。這個可能就有一點(diǎn)點(diǎn)難度了,因?yàn)槟愫苌儆眠@個語法,如果你用過,就會發(fā)現(xiàn)也很簡單。
首先你要理解,既然是查詢某一個類型的占比,肯定就需要統(tǒng)計(jì)總和。我們可以分別去統(tǒng)計(jì)到訂單總和sum1,然后再去統(tǒng)計(jì)即時訂單總和sum1,然后再去統(tǒng)計(jì)即時訂單總和sum1,然后再去統(tǒng)計(jì)即時訂單總和sum2。然后在相除就可以了。但是這里明確要求一條SQL語句。那該如何解決呢?
這里就需要你深入了解一下sum的運(yùn)行原理,我們可以設(shè)想我們一行一行的去讀取數(shù)據(jù),然后讓sum一行一行的累計(jì)起來,是不是就可以得到sum2的綜合了?至于sum2的綜合了?至于sum2的綜合了?至于sum1肯定很好統(tǒng)計(jì),直接是表中行數(shù)的綜合。
題解方式一:
select round ( sum(case when order_date = customer_pref_delivery_date then 1 else 0 end) / count(*) * 100, 2 ) as immediate_percentage from Delivery
題解方式二:
select round ( sum(order_date = customer_pref_delivery_date) / count(*) * 100, 2 ) as immediate_percentage from Delivery
這里當(dāng)sum表達(dá)式滿足條件,返回1,每次讀到滿足的一行數(shù)據(jù),sum都加1,最后數(shù)據(jù)讀完sum也就加完了。因此滿足條件的總條數(shù)就出來了。
改題目來源于LeetCode。
來源:力扣(LeetCode)
鏈接:leetcode-cn.com/problems/im…
還有一個比較不錯的例子,推薦好好解讀一下。加深該函數(shù)的使用場景。
https://www.jb51.net/article/207813.htm
到此這篇關(guān)于MySQL中sum函數(shù)使用的文章就介紹到這了,更多相關(guān)MySQL sum函數(shù)使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:甘南 吉林 隨州 滄州 黑河 資陽 荊州 錦州
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL中sum函數(shù)使用的實(shí)例教程》,本文關(guān)鍵詞 MySQL,中,sum,函數(shù),使,用的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。