我有一张Oracle表,过去两年里每天都有记录。日期表只有一列存储日期值。 我有一个记录电子邮件打开的第二个表。列是subscriber_id, time_opened,消息ID。
我想制作一份报告,其中包括日期表中的每个日期和 还有一个唯一的subscriber_id计数,在过去180天的打开表中有记录。 我希望不使用循环就能做到这一点,但如果这是唯一的选择,我愿意接受建议。
答案 0 :(得分:1)
您可以加入两个表并应用聚合count
函数:
SELECT d.date_column, COALESCE(COUNT(DISTINCT subscriber_id), 0)
FROM dates d
LEFT JOIN subscribsers s ON d.date_column = TRUNC(s.time_opened)
WHERE d.date_column >= SYSDATE - 180
GROUP BY d.date_column