sql - 嵌套分组查询的正确语法是什么?
问题描述
我有一个简单的表格,其中包含:
OnDate
SystemUserId
ObjectId
EntityId
我正在尝试获取一个结果集以显示每个 systemuserId 和 entityId 访问了多少个唯一 objectId
如果我像这样执行单个系统用户和实体,它会显示 83 个结果
SELECT DISTINCT objectid
FROM public.auditlog
WHERE ondate >= current_date
AND ondate < current_date + 1
AND systemuserid = '97de2a93-737c-e311-8437-12d0d8a96a66'
AND entityid = '70816501-edb9-4740-a16c-6a5efbc05d84'
当我尝试分组时,虽然我得到 189,但肯定有重复。
谢谢
SELECT A.entityid, A.systemuserid, SUM(A.c)
FROM
(SELECT entityid,systemuserid,objectid, count(*) as c
FROM public.auditlog
WHERE ondate >= current_date
AND ondate < current_date + 1
AND systemuserid = '97de2a93-737c-e311-8437-12d0d8a96a66'
AND entityid = '70816501-edb9-4740-a16c-6a5efbc05d84'
GROUP BY entityid, systemuserid,objectid) A
GROUP BY a.entityid, a.systemuserid
解决方案
为什么不直接使用count(distinct)
?
SELECT entityid, systemuserid, count(distinct objectid) as c
FROM public.auditlog
WHERE ondate >= current_date AND
ondate < current_date + 1 AND
systemuserid = '97de2a93-737c-e311-8437-12d0d8a96a66' AND
entityid = '70816501-edb9-4740-a16c-6a5efbc05d84'
GROUP BY entityid, systemuserid
推荐阅读
- java - JWT 验证失败:无法为 RSA 签名指定密钥字节。请指定 PublicKey 或 PrivateKey 实例
- javascript - 如何使用jquery在循环中更改每个按钮的值
- entity-framework-core - 实体框架核心排除 INNER JOIN
- c# - 封装没有 lambda 表达式的字段
- c# - 如何使用 C# 中的 zkemkeeper 库在图片框中的运行时获取指纹?
- python - 根据熊猫组比较日期
- machine-learning - TFF 联邦学习,评估方法
- ios - 自定义委托以使用 UIView 类中的 pushViewController
- css - Pdfkit python css在aws ec2服务器上没有按预期工作
- r - RMarkdown 使列表的元素在环境中可用