行数 | 订单价格 | 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_percentage from Delivery
题解方式二:
select round ( sum(order_date = customer_pref_delivery_date) / count(*) * 100, 2 ) as immediate_percentage from Delivery
这里当sum表达式满足条件,返回1,每次读到满足的一行数据,sum都加1,最后数据读完sum也就加完了。因此满足条件的总条数就出来了。
改题目来源于LeetCode。
来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/im…
还有一个比较不错的例子,推荐好好解读一下。加深该函数的使用场景。
https://www.jb51.net/article/207813.htm
到此这篇关于MySQL中sum函数使用的文章就介绍到这了,更多相关MySQL sum函数使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!