0

我有一张桌子emp_id, income,等等。

我希望获得类似查询的记录数

select * from table_name where income <= 500;

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

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

最简单的方法是什么?

4

2 回答 2

0

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

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

小提琴样本

于 2013-10-01T11:47:23.157 回答
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 子句将为您提供总体计数以及每个类别的计数。

于 2013-10-01T12:05:17.257 回答