【问题标题】:Get jobs count without using group by在不使用 group by 的情况下获取作业数
【发布时间】:2021-08-12 08:20:48
【问题描述】:
我有以下代码来计算某个客户的作业数。
SELECT CLIENT_ID,
COUNT(CASE WHEN CURRENT= 'Y' then 1 end) as JOBS_COUNT
FROM CLIENTS
GROUP BY CLIENT_ID
不过,要完成此操作,我需要在最后使用 group by,我正在寻找的是在分区内计算标志 CURRENT 的查询,因此我不必在结束,这可能吗?
【问题讨论】:
标签:
sql-server
tsql
select
【解决方案1】:
您可以在分区上提供 row_number() 并选择 rn =1 以避免使用派生表在分区上重复。
我添加的解决方案使用计数获得了不同的分区。如果您需要更多帮助,请告诉我。
SELECT Distinct CLIENT_ID,
COUNT(CASE WHEN CURRENT= 'Y' then 1 end) OVER (PARTITION BY ep.CLIENT_ID) as
jos_count as JOBS_COUNT
FROM CLIENTS
【解决方案2】:
我想你想要:
SELECT CLIENT_ID,
COUNT(CASE WHEN CURRENT = 'Y' then 1 end) OVER (PARTITION BY CLIENT_ID) as JOBS_COUNT
FROM CLIENTS;
这似乎是一个奇怪的请求,因为每个 CLIENT_ID 返回多行。但是,这似乎是您所要求的。