SELECT PERSON_ID,COUNT(APPL_ID) COUNTS
FROM APPLICATIONS
GROUP BY PERSON_ID
ORDER BY COUNTS DESC
上面的查询返回所有已申请所有时间的人员(实质上是整个表的计数)。我希望有一项条款,限制今年申请的人,但仍然显示他们所有申请的数量.例如,一个人可能在2018年申请过一次,但他们的申请是申请总数的20倍,因此结果将是相似的。跳过身份证的1,2,4-11。
ID | COUNT
---+-------
003| 20
---+-------
012| 4
发布于 2018-07-26 18:27:56
我怀疑您可以使用子查询来完成它,比如:
SELECT PERSON_ID, COUNT(APPL_ID) COUNTS
FROM APPLICATIONS
WHERE PERSON_ID IN (
SELECT DISTINCT PERSON_ID
FROM APPLICATIONS
WHERE APPL_DATE > 2018-01-01
)
GROUP BY PERSON_ID
ORDER BY COUNTS DESC
发布于 2018-07-26 18:57:53
根据索引等,这将提供稍微低一点的I/O:
SELECT PERSON_ID, COUNTS = COUNT(APPL_ID)
FROM dbo.APPLICATIONS
GROUP BY PERSON_ID
HAVING COUNT(CASE WHEN APPL_DATE >= '20180101' THEN 1 ELSE 0 END) >= 1
ORDER BY COUNTS DESC;
https://dba.stackexchange.com/questions/213339
复制相似问题