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

时间:2016-03-10 22:47:25

标签: mysql aggregate-functions having

假设有一个表(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个。是否有关于此表的查询?

如果他只是......

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子句中的记录(仅适用于第一季度的那个日期范围)?

2 个答案:

答案 0 :(得分:0)

我认为你的代码还可以。它只计算where子句中的记录。

答案 1 :(得分:-1)

您是否尝试过制作,以便数量(*)易于参考?

像:

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