- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用
目录
一,原题力扣链接
二,题干
表:
Sales
+---------------+---------+ | Column Name | Type | +---------------+---------+ | sale_date | date | | fruit | enum | | sold_num | int | +---------------+---------+ (sale_date, fruit) 是该表主键(具有唯一值的列的组合)。 该表包含了每一天中"苹果" 和 "桔子"的销售情况。编写解决方案报告每一天 苹果 和 桔子 销售的数目的差异.
返回的结果表, 按照格式为 ('YYYY-MM-DD') 的
sale_date
排序.返回结果表如下例所示:
示例 1:
输入: 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 | +------------+------------+-------------+ 输出: +------------+--------------+ | 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).
三,建表语句
Create table If Not Exists Sales (sale_date date, fruit ENUM('apples', 'oranges'), sold_num int);
Truncate table Sales;
insert into Sales (sale_date, fruit, sold_num) values ('2020-05-01', 'apples', '10');
insert into Sales (sale_date, fruit, sold_num) values ('2020-05-01', 'oranges', '8');
insert into Sales (sale_date, fruit, sold_num) values ('2020-05-02', 'apples', '15');
insert into Sales (sale_date, fruit, sold_num) values ('2020-05-02', 'oranges', '15');
insert into Sales (sale_date, fruit, sold_num) values ('2020-05-03', 'apples', '20');
insert into Sales (sale_date, fruit, sold_num) values ('2020-05-03', 'oranges', '0');
insert into Sales (sale_date, fruit, sold_num) values ('2020-05-04', 'apples', '15');;
insert into Sales (sale_date, fruit, sold_num) values ('2020-05-04', 'oranges', '16');
select * from sales;
四,分析
题解:
表 :销售表
字段:销售时间,销售种类,销售数量
求不同种类之间的差值 苹果-桔子的差值 最后按照销售时间排序
思路:
第一步,把表拆成2个表 一个是苹果的 一个是桔子的
第二步,内连接 连接2个表 算出差值
最后一部 改别名,并且排序
五,SQL解答
with t1 as (
select * from sales where fruit='apples'
),t2 as (
select * from sales where fruit='oranges'
)
select t1.sale_date as sale_date ,
(t1.sold_num-t2.sold_num) as diff
from t1,t2 where t1.sale_date=t2.sale_date order by sale_date;
六,验证
七,知识点总结
- 表格降维度操作
- 种类里面有多个维度 拆分成一个表只描述一个事情
- 苹果表和桔子表最后在拼接成宽表
- orderby的运用
- 自连接的运用
- where条件的运用
- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用