我有以下数据集:
| 0 |
| 0 |
| 0 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 2 |
| 2 |
| 2 |
| 2 |
| 2 |
| 2 |
| 2 |
| 3 |
| 3 |
| 3 |
| 4 |
| 4 |
| 4 |
| 4 |
| 4 |
| 4 |
| 6 |
| 6 |
| 6 |
| 7 |
| 7 |
| 7 |
| 7 |
| 8 |
| 8 |
| 8 |
| 9 |
| 9 |
| 14 |
| 16 |
| 21 |
| 28 |
| 30 |
| 32 |
| 57 |
我有以下SQL查询:
select bucket_floor,
CONCAT(bucket_floor, ' to ', bucket_ceiling-1) as bucket_name,
count(*) as count
from (
select
floor([value]/5)*5 as bucket_floor,
floor([value]/5)*5 + 5 as bucket_ceiling
from @URQuartileDataRaw
) a
group by bucket_floor, CONCAT(bucket_floor, ' to ', bucket_ceiling-1)
order by bucket_floor;
运行时,我得到以下信息:
|Bucket_Name|Release_Count|
|0 to 4 |25
|5 to 9 |12
|10 to 14 |1
|15 to 19 |1
|20 to 24 |1
|25 to 29 |1
|30 to 34 |2
|55 to 59 |1
我如何为35到39、40到44、45到49、50到54插入存储桶,因为数据集中没有这些存储桶的数据,但是我需要它们,因为此数据可以提供图表?
使用values()
或类似方法生成存储桶,然后使用left join
:
select v.bucket, count(dr.value)
from (values (0, 4, '0 to 4'),
(5, 9, '5 to 9'),
. . .
) v(bucket, lo, hi) left join
@URQuartileDataRaw dr
on dr.value between v.lo and v.hi
group by v.bucket, v.lo
order by v.lo;