【问题标题】: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 的查询,因此我不必在结束,这可能吗?

【问题讨论】:

  • 使用windows函数对结果进行分区,得到不同的
  • 样本数据和期望的结果会有所帮助。

标签: 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 返回多行。但是,这似乎是您所要求的。

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 2022-11-10
    • 2021-06-27
    • 2013-04-08
    • 2012-01-26
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    相关资源
    最近更新 更多