【发布时间】:2020-11-18 00:47:10
【问题描述】:
如何使用OVER(PARTITION BY ...) 区分?
SELECT ACCT_TYPE_CD AS entity,
ACCT_ID AS entity_VAL,
COUNT (1) AS CNT
FROM ACCOUNT
GROUP BY ACCT_TYPE_CD, ACCT_ID
HAVING COUNT (1) > 1;
entity |entity_val |cnt |
------------|----------------|----|
EMPID |1 |3 |
EMPID |1066 |3 |
我想使用下面的查询,所以我应该能够将它用作内部查询。
select ACCT_TYPE_CD, ACCT_ID, COUNT(*) OVER(PARTITION BY ACCT_TYPE_CD, ACCT_ID) AS CNT
from ACCOUNT ACCT;
acct_type_cd |ACCT_ID |cnt |
-------------|------------|----|
EMPID |1 |3 |
EMPID |1 |3 |
EMPID |1 |3 |
EMPID |1066 |3 |
EMPID |1066 |3 |
EMPID |1066 |3 |
【问题讨论】:
-
你能告诉我最终的查询是什么吗?
-
您的第二个查询看起来应该是一个简单的
GROUP BY查询,如果您不想重复(并且您只选择这些列)。 -
@Marth - 我不确定你的意思,你能在查询中显示吗?
-
如果第一个查询符合您的要求,那么您为什么要另一个查询?
标签: sql database postgresql greatest-n-per-group window-functions