【发布时间】:2021-09-13 09:12:39
【问题描述】:
您好,我正在尝试为大量行创建存储桶。我的最大值为9759721,最小值为1006909。我想将结果显示如下:
| distance | bucket | range |
|---|---|---|
| 1006909 | 0 | 1000000 - 1009999 |
| 1013525 | 1 | 1010000 - 1019999 |
| 1021948 | 2 | 1020000 - 1029999 |
表格可能不太清楚,但总的来说,我想将它们分解为 10000 的变化。从1000000 开始,每10000 创建一个新桶。
我尝试了以下代码,但没有显示正确的输出。
select distance,floor(distance/10000) as _floor from data;
我得到了类似的东西:
| distance | bucket |
|---|---|
| 1006909 | 100 |
| 1013525 | 101 |
| 1021948 | 102 |
| 1035472 | 103 |
| 1042069 | 104 |
| 9759721 | 975 |
这似乎是正确的,但我需要存储桶从 0 开始,然后根据 10000 进行更改。然后还有一个范围列。我对距离的最小值是 1006909,因此数据不是从 0 开始的,但是仍然可以有一个从 0 开始的桶列[即分配给最小距离]。
【问题讨论】:
-
您的存储桶确实从 0 开始,前提是您有 0 到 9999 之间距离的数据。如果您只想将存储桶 100 变为存储桶 0,只需从当前计算中减去 100?如果这不是您的意思,请用更多信息编辑您的答案? (另外,请说明您使用的 MySQL 版本。MySQL 8 和 MySQL 5.x 差别很大。)
-
@MatBailie 我刚刚编辑了标签,关于存储桶,我的最小值为 1006909,所以我的数据不是从 0 开始的。但是无论如何都不能从 0 或 1 开始存储桶您的数据从哪里开始?
标签: mysql sql bucket mysql-8.0