MySQL : 如何使 Having 子句仅按 Where 子句中的记录进行过滤?

MySQL : How to make a Having clause only filter by records in a Where clause?

假设有一个 table (dunder_sales) 跟踪一家知名造纸公司的员工的销售额,这里是其记录的示例..

 sale_id    emp_name       date_of_sale
   1001       Jim            04/23/2015
   1002       Dwight         04/28/2015
   1003       Dwight         05/11/2015
   1004       Phyllis        06/23/2015

假设一位经理想查看哪位员工在 2015 年第一季度的销售额超过 30。是否有针对此 table 的查询?

如果他这样做了..

SELECT emp_name, count(*)
FROM under_sales
WHERE date_of_sale > '2015-01-01'
    and date_of_sale < '2015-04-01'
GROUP BY emp_name
HAVING count(*) > 30

HAVING过滤器中使用的计数函数会统计所有的记录,他如何让它只统计where子句中的记录(只针对第一季度的那个日期范围)?

你试过让 count(*) 有一些容易参考的东西吗?

喜欢:

select 
emp_name, 
count(*) as records
FROM dunder_sales 
where date_of_sale > '2015-01-01' and date_of_sale < '2015-04-01' 
and records > 30
GROUP BY emp_name

我觉得你的代码没问题。它只计算 where 子句中的记录。