leetcode 1445 苹果和橘子(postgresql)

需求

表: 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).

输出

在这里插入图片描述

输出

with t1 as (
-- 查出苹果数据
select *
from sales
where fruit='apples'
),t2 as (
-- 查出橘子数据
select *
from sales
where fruit='oranges'
)
select to_char(coalesce(t1.sale_date,t2.sale_date),'YYYY-MM-DD') as sale_date,
       t1.sold_num-t2.sold_num as diff
from t1
inner join t2
on t1.sale_date=t2.sale_date
order by sale_date

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值