跳到主要内容

1158.市场分析 I

序号题目难度
1158题目链接中等

题目大意​

编写解决方案找出每个用户的注册日期和在 2019 年作为买家的订单总数。

以 任意顺序 返回结果表。

表: Users

Column NameType
user_idint
join_datedate
favorite_brandvarchar

user_id 是此表主键(具有唯一值的列)。 表中描述了购物网站的用户信息,用户可以在此网站上进行商品买卖。

表: Orders

Column NameType
order_idint
order_datedate
item_idint
buyer_idint
seller_idint

order_id 是此表主键(具有唯一值的列)。 item_id 是 Items 表的外键(reference 列)。 (buyer_id,seller_id)是 User 表的外键。

表:Items

Column NameType
item_idint
item_brandvarchar

item_id 是此表的主键(具有唯一值的列)。

示例​

输入: Users 表:

user_idjoin_datefavorite_brand
12018-01-01Lenovo
22018-02-09Samsung
32018-01-19LG
42018-05-21HP

Orders 表:

order_idorder_dateitem_idbuyer_idseller_id
12019-08-01412
22018-08-02213
32019-08-03323
42018-08-04142
52018-08-04134
62019-08-05224

Items 表:

item_iditem_brand
1Samsung
2Lenovo
3LG
4HP

输出​

buyer_idjoin_dateorders_in_2019
12018-01-011
22018-02-092
32018-01-190
42018-05-210

参考答案​

select
t1.user_id buyer_id
, t1.join_date
, sum(case when order_date between '2019-01-01' and '2019-12-31' then 1 else 0 end) orders_in_2019
from Users t1
left join Orders t2
on t1.user_id = t2.buyer_id
group by 1,2
;