tsql 不同的计数

标签 tsql count having

我正在使用 SSMS 2008,并尝试选择参与两个不同事件的消费者计数。这可能是一个简单的查询,但它目前没有返回预期的计数。这是我的 T-SQL 代码,它更好地解释了我的尝试:

select [Program Quarter], event_name, consumer
from #consumer_initiations
where [Program Quarter] = 1  --and consumer = 'Byrd, Victoria Lynn'
group by [Program Quarter], event_name, consumer
having count (distinct event_name) > 1

所以上面的查询返回 0 条记录。如果我运行以下查询,我会得到所有记录:

select [Program Quarter], event_name, consumer
from #consumer_initiations
where [Program Quarter] = 1

因此,我可以看到其中一些记录的位置,其中存在同一季度、同一个人,但该人有 2 个或更多事件。现在,我如何计算同一个人参与 2 个或更多事件的次数?

最佳答案

注意:很快就想到了,所以我确信这可以优化:

分解问题。

  1. 查找在相关季度举办了多项事件的人员
  2. 获取上述子查询中找到的每个消费者的计划季度、事件名称和消费者

接下来,子查询类似于

SELECT DISTINCT Consumer
FROM #consumer_initiations
WHERE Count(event_name) > 1

完整的查询如下:

SELECT [Program Quarter], event_name, consumer   
FROM #consumer_initiations  
WHERE consumer IN (SELECT DISTINCT Consumer
FROM #consumer_initiations
WHERE Count(event_name) > 1)

然后我会考虑如何在没有子查询的情况下优化它。

关于tsql 不同的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7576160/

相关文章:

sql - t-sql BETWEEN 子句

sql - 在 Oracle 中使用计数作为条件

json - jq通过特定的key统计json中的item个数

SQL - HAVING 与 WHERE

sql - PostgreSQL HAVING 子句

MySQL IN 语句中不存在的值

sql-server - SQL Server批处理问题与错误处理

Sql Server 脚本生成器

sql - 如何使用另一个表中的随机行更新表的每一行

mysql - 如何在 MySQL 中统计 SUM 的结果