题目链接:点击打开链接
题目大意:略。
解题思路:注意如何将 COUNT(带条件判断) 转化为 SUM() 小技巧。
AC 代码
-- 解决方案(1)
SELECT user_id buyer_id, join_date, IFNULL(cnt, 0) orders_in_2019
FROM Users u LEFT JOIN
(SELECT buyer_id, COUNT(1) cnt, order_date
FROM Orders
WHERE order_date between '2019-01-01' AND '2019-12-31'
GROUP BY buyer_id) RS
ON u.user_id = RS.buyer_id
-- 解决方案(2)
SELECT user_id buyer_id, join_date, IFNULL(cnt, 0) orders_in_2019
FROM Users u LEFT JOIN
(SELECT buyer_id, SUM(IF(order_date between '2019-01-01' AND '2019-12-31', 1, 0)) cnt
FROM Orders
GROUP BY buyer_id) RS
ON u.user_id = RS.buyer_id