小编典典

SQL Server-查找范围内的值

sql

我有一个要求,我必须找到不同年龄段的人数,例如:

0-5      12

6-10     35

11-15    26

16-20    57

20+      120

我正在SQL
Server中创建一个存储过程,该过程将首先创建一个临时表并存储年龄组,例如一列将为0,另一列将为5,依此类推。然后,我将遍历它们,找到最小和最大范围之间的计数,并将该计数与mim-
max值一起存储在另一个临时表中。

是否有其他简便更好的方法来实现此输出。请指教。


阅读 196

收藏
2021-04-28

共1个答案

小编典典

也许与SUMCASE

SELECT [0-5]   = SUM(CASE WHEN AGE >= 0 AND AGE <= 5 THEN 1 ELSE 0 END),
       [6-10]  = SUM(CASE WHEN AGE > 5 AND AGE <= 10 THEN 1 ELSE 0 END),
       [11-15] = SUM(CASE WHEN AGE > 10 AND AGE <= 15 THEN 1 ELSE 0 END),
       ....
FROM dbo.Persons

演示版

或者,对于范围表,您可以使用LEFT OUTER JOINGROUP BY+ COUNT

SELECT r.[From], r.[To], [Count]=COUNT(p.Age)
FROM dbo.Ranges r
LEFT OUTER JOIN dbo.Persons p
   ON p.[Age] >= r.[From] AND  p.[Age] <= r.[To]
GROUP BY r.[From], r.[To]

演示版

2021-04-28