我有一张桌子emp_id, income
,等等。
我希望获得类似查询的记录数
select * from table_name where income <= 500;
将至少有 3 个这样的收入组 - 将在报告生成时给出。
此外,我希望获得所有 3 个计数 - 并按其各自收入组的计数对结果进行分组 - 所有这些都在一个查询中。
最简单的方法是什么?
你能试试这个吗,如果这不适合你的需要,你可能需要编写一个自定义存储过程
SELECT
sum((income <= 500)) as range1,
sum((income <= 1000)) as range2
FROM table_name
您可以使用 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 子句将为您提供总体计数以及每个类别的计数。