Leetcode.数据库.1445. 苹果和桔子

1445. 苹果和桔子

SQL架构
表: Sales

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| sale_date     | date    |
| fruit         | enum    | 
| sold_num      | int     | 
+---------------+---------+

(sale_date,fruit) 是该表主键.
该表包含了每一天中"苹果" 和 "桔子"的销售情况.

写一个 SQL 查询, 报告每一天 苹果 和 桔子 销售的数目的差异.

返回的结果表, 按照格式为 (‘YYYY-MM-DD’) 的 sale_date 排序.

查询结果表如下例所示:

Sales:
+------------+------------+-------------+
| sale_date  | fruit      | sold_num    |
+------------+------------+-------------+
| 2020-05-01 | apples     | 10          |
| 2020-05-01 | oranges    | 8           |
| 2020-05-02 | apples     | 15          |
| 2020-05-02 | oranges    | 15          |
| 2020-05-03 | apples     | 20          |
| 2020-05-03 | oranges    | 0           |
| 2020-05-04 | apples     | 15          |
| 2020-05-04 | oranges    | 16          |
+------------+------------+-------------+

Result:
+------------+--------------+
| sale_date  | diff         |
+------------+--------------+
| 2020-05-01 | 2            |
| 2020-05-02 | 0            |
| 2020-05-03 | 20           |
| 2020-05-04 | -1           |
+------------+--------------+2020-05-01, 卖了 10 个苹果 和 8 个桔子 (差异为 10 - 8 = 2).2020-05-02, 卖了 15 个苹果 和 15 个桔子 (差异为 15 - 15 = 0).2020-05-03, 卖了 20 个苹果 和 0 个桔子 (差异为 20 - 0 = 20).2020-05-04, 卖了 15 个苹果 和 16 个桔子 (差异为 15 - 16 = -1).

题解:

分组后求和即可,怎么实现求和呢?我们可以借助if函数来实现对apples加,对oranges减的作用;

代码:

select sale_date,sum( if(fruit='apples',sold_num,-sold_num)) diff
from Sales
group by sale_date

猜你喜欢

转载自blog.csdn.net/xiangguang_fight/article/details/119844812
今日推荐