我有一张这样的表
col1 col2 col3 value
10 1 1 2.65
10 1 4 1.14
10 1 6 3.25
10 1 13 7.25
10 1 17 4.25
10 1 23 6.67
10 1 28 4.28
这是我的表,所以我想要输出如下
col1 col2 col3 min(value) max(value) avg(value)
10 1 10 1.14 3.25 2.34
10 1 20 4.25 7.25 5.75
10 1 30 4.28 6.67 5.47
这里我必须使用group by子句col3值为1-10一组,11-20是一组,21-30是一组。
我怎样才能得到这个查询?。
答案 0 :(得分:1)
在您的选择和分组中使用CASE
语句:
SELECT col1,
col2,
CASE WHEN col3 < 10 THEN 10
WHEN col3 > 10 AND col3 <= 20 THEN 20
ELSE 30
END as col3,
MIN(value),
MAX(value),
AVG(value)
FROM table
GROUP BY col1,
col2,
CASE WHEN col3 < 10 THEN 10
WHEN col3 > 10 AND col3 <= 20 THEN 20
ELSE 30
END