电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL中sum函數使用的實例教程

瀏覽:80日期:2023-10-05 08:12:28
文章簡介

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

語法分析

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官方文檔的一個功能描述。這里翻譯一下大致的意思是什么。

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

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

行數 訂單價格 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

實例演示

假設有下面一張表(Delivery),表結構如下:

+-----------------------------+---------+| Column Name | Type |+-----------------------------+---------+| delivery_id | int || customer_id | int || order_date | date || customer_pref_delivery_date | date || order_money | decimal |+-----------------------------+---------+

delivery_id 是表的主鍵。

該表保存著顧客的食物配送信息,顧客在某個日期下了訂單,并指定了一個期望的配送日期(和下單日期相同或者在那之后)。如果顧客期望的配送日期和下單日期相同,則該訂單稱為 「即時訂單」,否則稱為「計劃訂單」。里面有如下數據:

+-------------+-------------+------------+-----------------------------+-------------+| 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 |+-------------+-------------+------------+-----------------------------+-------------+

實例一

統計出該表中所有的訂單總金額。這里就很簡單了,也是我們常用的使用方式,直接sum()參數填寫某一個列就行了。按照上面的語法規則應該是一個表達式,實際上一列也是一個表達式。

select sum(order_money) from Delivery;

實例二

寫一條 SQL 查詢語句獲取即時訂單所占的百分比, 保留兩位小數。這個可能就有一點點難度了,因為你很少用這個語法,如果你用過,就會發現也很簡單。

首先你要理解,既然是查詢某一個類型的占比,肯定就需要統計總和。我們可以分別去統計到訂單總和sum1,然后再去統計即時訂單總和sum1,然后再去統計即時訂單總和sum1,然后再去統計即時訂單總和sum2。然后在相除就可以了。但是這里明確要求一條SQL語句。那該如何解決呢?

這里就需要你深入了解一下sum的運行原理,我們可以設想我們一行一行的去讀取數據,然后讓sum一行一行的累計起來,是不是就可以得到sum2的綜合了?至于sum2的綜合了?至于sum2的綜合了?至于sum1肯定很好統計,直接是表中行數的綜合。

題解方式一:

select round ( sum(case when order_date = customer_pref_delivery_date then 1 else 0 end) / count(*) * 100, 2) as immediate_percentagefrom Delivery

題解方式二:

select round ( sum(order_date = customer_pref_delivery_date) / count(*) * 100, 2) as immediate_percentagefrom Delivery

這里當sum表達式滿足條件,返回1,每次讀到滿足的一行數據,sum都加1,最后數據讀完sum也就加完了。因此滿足條件的總條數就出來了。

題目來源

改題目來源于LeetCode。

來源:力扣(LeetCode)

鏈接:leetcode-cn.com/problems/im…

還有一個比較不錯的例子,推薦好好解讀一下。加深該函數的使用場景。

https://www.jb51.net/article/207813.htm

總結

到此這篇關于MySQL中sum函數使用的文章就介紹到這了,更多相關MySQL sum函數使用內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: SPC工作站-连杆综合检具-表盘气动量仪-内孔缺陷检测仪-杭州朗多检测仪器有限公司 | 找培训机构_找学习课程_励普教育 | 手机游戏_热门软件app下载_好玩的安卓游戏下载基地-吾爱下载站 | 自动配料系统_称重配料控制系统厂家 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 真空上料机(一种真空输送机)-百科 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 湖南自考_湖南自学考试| 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 压力控制器,差压控制器,温度控制器,防爆压力控制器,防爆温度控制器,防爆差压控制器-常州天利智能控制股份有限公司 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 不锈钢水箱厂家,不锈钢保温水箱-山东桑特供水设备 | 西安展台设计搭建_西安活动策划公司_西安会议会场布置_西安展厅设计西安旭阳展览展示 | 好看的韩国漫画_韩漫在线免费阅读-汗汗漫画 | PVC快速门-硬质快速门-洁净室快速门品牌厂家-苏州西朗门业 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 一体化污水处理设备_生活污水处理设备_全自动加药装置厂家-明基环保 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 深圳激光打标机_激光打标机_激光焊接机_激光切割机_同体激光打标机-深圳市创想激光科技有限公司 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | ★塑料拖链__工程拖链__电缆拖链__钢制拖链 - 【上海闵彬】 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 维泰克Veertek-锂电池微短路检测_锂电池腐蚀检测_锂电池漏液检测 | 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 潍坊大集网-潍坊信息港-潍坊信息网 | 查分易-成绩发送平台官网| 维泰克Veertek-锂电池微短路检测_锂电池腐蚀检测_锂电池漏液检测 | SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 活性氧化铝球|氧化铝干燥剂|分子筛干燥剂|氢氧化铝粉-淄博同心材料有限公司 | 深圳彩钢板_彩钢瓦_岩棉板_夹芯板_防火复合彩钢板_长鑫 | 焊锡丝|焊锡条|无铅锡条|无铅锡丝|无铅焊锡线|低温锡膏-深圳市川崎锡业科技有限公司 | 塑料异型材_PVC异型材_封边条生产厂家_PC灯罩_防撞扶手_医院扶手价格_东莞市怡美塑胶制品有限公司 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 江苏远邦专注皮带秤,高精度皮带秤,电子皮带秤研发生产 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 宁波普瑞思邻苯二甲酸盐检测仪,ROHS2.0检测设备,ROHS2.0测试仪厂家 |