![](/img/trans.png)
[英]SQL INSERT INTO SELECT and Return the SELECT data to Create Row View Counts
[英]How to create a SQL select that creates all data for a range and counts occurences
我想將數據收集在一個表中,該表具有記錄在特定日期發生事件的記錄,並創建具有完整日期范圍數據的輸出,其中包含每個日期每個人的事件數。
例如,如果我有一個包含這樣的數據的Source表:
neil 01-05-2015
john 02-05-2015
neil 01-05-2015
neil 02-05-2015
jane 03-05-2015
第二個表包含所有日期:
01-05-2015
02-05-2015
03-05-2015
04-05-2015
如何合並它們以創建所需的輸出?
neil 01-05-2015 2
neil 02-05-2015 1
neil 03-05-2015 0
neil 04-05-2015 0
john 01-05-2015 0
john 02-05-2015 1
john 03-05-2015 0
john 04-05-2015 0
jane 01-05-2015 0
jane 02-05-2015 0
jane 03-05-2015 1
jane 04-05-2015 0
我嘗試了各種完全連接,但似乎沒有什么能真正滿足我的需要,我想知道僅在SQL中是否有可能。
使用CROSS JOIN
首先在日期和人物之間進行完整的乘積CROSS JOIN
。 然后使用LEFT JOIN
來計算所有匹配項。
SELECT s1.name, d.date, IFNULL(COUNT(s2.name), 0)
FROM Dates AS d
CROSS JOIN (SELECT DISTINCT name FROM Source) AS s1
LEFT JOIN Source AS s2 ON s1.name = s2.name AND d.date = s2.date
GROUP BY s1.name, d.date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.