Datebucket 将日期截断为桶。但是您选择了原始日期。
这就像按十年“60”、“70”、“80”分组,但要实际年份。
SELECT column1 as year,
truncate(year,-1) as decade
FROM VALUES (1),(2),(3),(14),(15),(16),(27),(28),(29);
给出:
| YEAR |
DECADE |
| 1 |
0 |
| 2 |
0 |
| 3 |
0 |
| 14 |
10 |
| 15 |
10 |
| 16 |
10 |
| 27 |
20 |
| 28 |
20 |
| 29 |
20 |
所以如果我尝试选择
SELECT column1 as year
FROM VALUES (1),(2),(3),(14),(15),(16),(27),(28),(29)
GROUP BY truncate(year,-1)
ORDER BY 1;
给出错误
错误:select 子句中的“VALUES.COLUMN1”既不是聚合也不是 group by 子句。 (第 15 行)
因此,如果我们将十年移入选择中,这是有道理的:
SELECT truncate(column1,-1) as decade
FROM VALUES (1),(2),(3),(14),(15),(16),(27),(28),(29)
GROUP BY decade
ORDER BY 1;
我们得到
所以问题不在于:datebucket(date),而是:datebucket(date) 和date 相关的事实,从GROUPING 的角度来看它们是不相关的。