sql oracle:列出在同一个月内重复次数超过N次的记录

时间:2017-05-10 06:34:45

标签: sql oracle

我想从我的记录中获取,如果同一个月内存储的商品名相同的记录超过三个。

我的记录示例

TradeID      Tradename           PrescDT
------------------------------------------
1109         Panadol             sysdate-1
1123         Opioids             sysdate-3
1125         Doxycycline         sysdate-3
1138         Panadol             sysdate-14
1139         Panadol             sysdate-3
1141         Panadol             sysdate-5
1142         Codeine             sysdate-5
1162         Opioids             sysdate-14
1167         Codeine             sysdate-14
1168         Prednisone          sysdate-14
1170         Codeine             sysdate-21
1172         Codeine             sysdate-22

所以它应该只返回我,我只需要商品名和日期

Tradename           PrescDT
------------------------------
Panadol             sysdate-1
Panadol             sysdate-14
Panadol             sysdate-3
Panadol             sysdate-5

我已经尝试过使用此功能,但是我会在同一个月内至少重复三次所有记录,并且不是我正在寻找的

SELECT Tradename, PrescDT
FROM (
    SELECT p.*, COUNT(*) OVER (PARTITION BY TRUNC(PrescDT, 'MM')) AS c 
    FROM PRESCRIPTION p
    ) p
WHERE c > 3
ORDER BY prescDT ASC;

1 个答案:

答案 0 :(得分:3)

您的查询几乎正确。您需要将商标名包含在private子句中:

PARTITION BY