[英]SQL Customer Order
WITH CTE AS( SELECT u.name, count(user_id) AS "Num_Apperence",YEAR(t.created_at)
FROM transactions t
LEFT JOIN users u
ON t.user_id = u.id
WHERE YEAR(t.created_at) = 2019
GROUP BY u.name
HAVING count(user_id) > 3
)
SELECT Name1
FROM (SELECT u.name AS 'Name1', count(user_id) AS "Num_Apperence",YEAR(t.created_at)
FROM transactions t
LEFT JOIN users u
ON t.user_id = u.id
WHERE YEAR(t.created_at) = 2020
GROUP BY u.name
HAVING count(user_id) > 3) AS T
INNER JOIN CTE
ON CTE.name = T.Name1
這樣可以成功運行,但不能通過測試用例。 我查看了兩個查詢結果,似乎找到了,我找不到問題所在
2019 & 2020 年訂單超過 3 個的客戶,output 只是名稱:
SELECT u.name
FROM (
SELECT
t.user_id
FROM transactions t
WHERE t.created_at >= '2019-01-01' AND t.created_at < '2021-01-01'
GROUP BY t.user_id
HAVING count(case when year(t.created_at) = 2019 then 1 end) > 3
AND count(case when year(t.created_at) = 2020 then 1 end) > 3
) AS uc
LEFT JOIN users u ON uc.user_id = u.id
group by
的查詢的 select 子句中進行聚合WHERE YEAR(t.created_at) IN (2019,2020)
但這可能不會使用該日期列上的任何索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.