在选择查询结果集中按记录数计数和分组

时间:2013-10-01 11:29:31

标签: mysql select count group-by

我有一张emp_id, income等表格。

我希望得到像

这样的查询的记录数
select * from table_name where income <= 500;

将至少有3个这样的收入群体 - 这将在报告生成时间给出。

此外,我希望获得所有3个计数 - 并将结果按其各自收入组的计数进行分组 - 所有这一切都在一个查询中。

最简单的方法是什么?

2 个答案:

答案 0 :(得分:0)

你可以试试这个吗,如果这不适合你的需要你可能需要编写一个自定义存储过程

SELECT 
sum((income <= 500)) as range1,
sum((income <= 1000)) as range2 
FROM table_name 

sample fiddle

答案 1 :(得分:0)

您可以使用CASE表达式创建类别,然后使用GROUP BY来汇总类别。

SELECT COUNT(*) AS num, 
       CASE WHEN income IS NULL    THEN 'missing'
            WHEN income <= 0       THEN '0'
            WHEN income <= 500     THEN '1 - 500'
            WHEN income <= 1000    THEN '501-1000'
                                   ELSE '> 1000' 
       END AS category
  FROM table_name 
 GROUP BY category WITH ROLLUP

包含WITH ROLLUP子句将为您提供总体计数以及每个类别的计数。