我得查询有更好的表现:
SELECT COUNT(DISTINCT T.ID)
FROM MY_TABLE T
WHERE T.DATE BETWEEN ADD_MONTHS(TO_DATE('01/12/2018', 'dd/mm/yyyy'), -6) AND
LAST_DAY(TO_DATE('01/12/2018', 'dd/mm/yyyy'));
此查询输出在参考日期之前的6个月内该标志的不同出现次数。
我试图使用Oracle分析功能,但没有一个例子在网上找到的工作也不是我想出了:
SELECT COUNT(DISTINCT T.ID) OVER(RANGE BETWEEN ADD_MONTHS(TO_DATE('01/12/2018', 'dd/mm/yyyy'), -6) AND LAST_DAY(TO_DATE('01/12/2018', 'dd/mm/yyyy')))
FROM MY_TABLE T;
我缺少的东西或什么,我想简单地完成不值得分析的功能或者是错误的?
谢谢。
答案 0 :(得分:0)
您可以尝试使用GROUP BY。有时,最快。如果您在DATE字段上没有索引,则可以使用并行选项执行全表扫描。
user_messages: user_id, chat_id, timestamp
user_chats_deleted: user_id, chat_id, timestamp