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 子句中的记录。
假设有一个 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 子句中的记录。