关于

时间:2017-07-16 01:21:57

标签: mysql sql group-by

我有一张这样的表

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是一组。

我怎样才能得到这个查询?。

1 个答案:

答案 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