最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中sum函數(shù)使用的實(shí)例教程

 更新時(shí)間:2021年03月17日 16:59:40   作者:A夢多啦A  
這篇文章主要給大家介紹了關(guān)于MySQL中sum函數(shù)使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

文章簡介

今天分享一下MySQL中的sum函數(shù)使用。該函數(shù)已經(jīng)成為大家操作MySQL數(shù)據(jù)庫中時(shí)常用到的一個(gè)函數(shù),這個(gè)函數(shù)統(tǒng)計(jì)滿足條件行中指定列的和,想必肯定大家都知道了,本身就沒什么講頭了,這篇文章主要是通過幾個(gè)小案例深入了解一下該函數(shù),以及在做MySQL查詢時(shí)如何使用sum函數(shù)做優(yōu)化。

語法分析

SUM([DISTINCT] expr) [over_clause]

  • Returns the sum of expr. If the return set has no rows, SUM() returns NULL. The DISTINCT keyword can be used to sum only the distinct values of expr.
  • If there are no matching rows, SUM() returns NULL.
  • This function executes as a window function if over_clause is present.

上面幾句是MySQL官方文檔的一個(gè)功能描述。這里翻譯一下大致的意思是什么。

  • 返回expr表達(dá)式的和。如果沒有返回行數(shù),則返回NULL。這里的DISTINCT是為了去掉表達(dá)式expr中的重復(fù)值。
  • 如果沒有匹配到行,該函數(shù)也返回NULL。
  • 如果設(shè)置了over_clause,則該函數(shù)作為窗口函數(shù)執(zhí)行。對窗口函數(shù)不熟悉的,可以去了解一下MySQL中的窗口函數(shù)。

函數(shù)解釋

在使用該函數(shù)時(shí),我們應(yīng)該思考一下,該函數(shù)是如何統(tǒng)計(jì)表達(dá)式中的和呢?可能有的程序員會(huì)想,這個(gè)函數(shù)直接去統(tǒng)計(jì)滿足條件中所有行的總和。這么理解其實(shí)也沒錯(cuò),只是表達(dá)的不是很準(zhǔn)確或者他不夠真實(shí)了解運(yùn)行原理。
實(shí)際上該函數(shù)是根據(jù)匹配行的值,一個(gè)一個(gè)累加起來的。這里舉個(gè)例子,在一個(gè)訂單表中滿足條件的有10行數(shù)據(jù),我們需要統(tǒng)計(jì)訂單中的總價(jià),sum的初始值是0,在匹配到第一行時(shí),訂單價(jià)格是10,此時(shí)sum就變成10,匹配到第二行,訂單價(jià)格是20,這時(shí)候sum就是30。第三行訂單價(jià)格是50,這時(shí)候sum就是80。按照這種方式依次累加。

行數(shù) 訂單價(jià)格 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í)例演示

假設(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 是表的主鍵。

該表保存著顧客的食物配送信息,顧客在某個(gè)日期下了訂單,并指定了一個(gè)期望的配送日期(和下單日期相同或者在那之后)。如果顧客期望的配送日期和下單日期相同,則該訂單稱為 「即時(shí)訂單」,否則稱為「計(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ù)填寫某一個(gè)列就行了。按照上面的語法規(guī)則應(yīng)該是一個(gè)表達(dá)式,實(shí)際上一列也是一個(gè)表達(dá)式。

select sum(order_money) from Delivery;

實(shí)例二

寫一條 SQL 查詢語句獲取即時(shí)訂單所占的百分比, 保留兩位小數(shù)。這個(gè)可能就有一點(diǎn)點(diǎn)難度了,因?yàn)槟愫苌儆眠@個(gè)語法,如果你用過,就會(huì)發(fā)現(xiàn)也很簡單。

首先你要理解,既然是查詢某一個(gè)類型的占比,肯定就需要統(tǒng)計(jì)總和。我們可以分別去統(tǒng)計(jì)到訂單總和sum1,然后再去統(tǒng)計(jì)即時(shí)訂單總和sum1,然后再去統(tǒng)計(jì)即時(shí)訂單總和sum1,然后再去統(tǒng)計(jì)即時(shí)訂單總和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

還有一個(gè)比較不錯(cuò)的例子,推薦好好解讀一下。加深該函數(shù)的使用場景。

http://www.fzitv.net/article/207813.htm

總結(jié)

到此這篇關(guān)于MySQL中sum函數(shù)使用的文章就介紹到這了,更多相關(guān)MySQL sum函數(shù)使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中NULL對索引的影響深入講解

    MySQL中NULL對索引的影響深入講解

    這篇文章主要給大家介紹了關(guān)于MySQL中NULL對索引的影響的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • mysql?or走索引加索引及慢查詢的作用

    mysql?or走索引加索引及慢查詢的作用

    這篇文章主要介紹了mysql?or走索引加索引及慢查詢的作用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • MySQL使用innobackupex備份連接服務(wù)器失敗的解決方法

    MySQL使用innobackupex備份連接服務(wù)器失敗的解決方法

    這篇文章主要為大家詳細(xì)介紹了MySQL使用innobackupex備份連接服務(wù)器失敗的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Win7下mysql5.5安裝圖文教程

    Win7下mysql5.5安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了Win7下mysql5.5安裝的圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 利用SQL注入漏洞拖庫的方法

    利用SQL注入漏洞拖庫的方法

    利用SQL注入漏洞登錄后臺(tái)和利用SQL注入漏洞拖庫是我學(xué)習(xí)了相關(guān)內(nèi)容之后的一點(diǎn)小結(jié),沒啥深度,正如文章開頭所說,權(quán)當(dāng)總結(jié),別無它意
    2012-01-01
  • 教你如何6秒鐘往MySQL插入100萬條數(shù)據(jù)的實(shí)現(xiàn)

    教你如何6秒鐘往MySQL插入100萬條數(shù)據(jù)的實(shí)現(xiàn)

    這篇文章主要介紹了教你如何6秒鐘往MySQL插入100萬條數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • MySQL 如何處理隱式默認(rèn)值

    MySQL 如何處理隱式默認(rèn)值

    這篇文章主要介紹了MySQL 處理隱式默認(rèn)值的相關(guān)資料,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-12-12
  • mysql 通過拷貝數(shù)據(jù)文件的方式進(jìn)行數(shù)據(jù)庫遷移實(shí)例

    mysql 通過拷貝數(shù)據(jù)文件的方式進(jìn)行數(shù)據(jù)庫遷移實(shí)例

    這篇文章主要介紹了mysql 通過拷貝數(shù)據(jù)文件的方式進(jìn)行數(shù)據(jù)庫遷移實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • mysql 8.0.13 安裝配置方法圖文教程

    mysql 8.0.13 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.13 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Mysql定時(shí)數(shù)據(jù)庫備份實(shí)現(xiàn)的保姆級教程

    Mysql定時(shí)數(shù)據(jù)庫備份實(shí)現(xiàn)的保姆級教程

    數(shù)據(jù)備份本身主要是為了預(yù)防一些意外,例如服務(wù)器或者個(gè)人電腦的硬件故障、人為的錯(cuò)誤操作等情況,這篇文章主要給大家介紹了Mysql定時(shí)數(shù)據(jù)庫備份實(shí)現(xiàn)的保姆級教程,需要的朋友可以參考下
    2024-12-12

最新評論

邵武市| 普兰店市| 北海市| 泾阳县| 中山市| 庐江县| 吴旗县| 新和县| 揭东县| 玛多县| 丹阳市| 定远县| 丹东市| 遵化市| 崇礼县| 城市| 杭锦后旗| 林甸县| 长宁区| 南涧| 新宾| 石景山区| 安溪县| 临颍县| 三亚市| 龙里县| 余干县| 明溪县| 斗六市| 留坝县| 六安市| 普洱| 黄石市| 清新县| 上犹县| 民乐县| 聂荣县| 尚义县| 郴州市| 恭城| 嘉荫县|