SELECT / GROUP BY - 值的序列

时间:2013-07-28 09:44:45

标签: mysql select group-by

我有一张这样的表:

CREATE TABLE tbltest (
  Col1           Integer(10) UNSIGNED,
  Col2           Integer(10) UNSIGNED
)

有样本值:

Col1 Col2
---------
1     1   
2     1   
3     1   
4     1   
5     1   

6     2   
7     2   
8     2   
9     2   
10    2   

11    1   
12    1   
13    1   
14    1   
15    1   

我希望SELECT SUM(col1) GROUPBY col2的序列值不是所有值。以上数据结果如下:

col1 col2 
---------
15    1   
40    2   
75    1   

我不知道查询是怎么样的。 也请原谅我这个糟糕的头衔。我不知道应该叫什么。

由于

3 个答案:

答案 0 :(得分:3)

由于MySQL缺乏分析功能,有点复杂的版本;我假设它是你需要的SUM的{​​{1}};

val1

An SQLfiddle to test with

如果您将SELECT SUM(val1) val1, MAX(val2) val2 FROM ( SELECT s1.val1, COUNT(s3.val1) grouping, s1.val2 val2 FROM sequence s1 LEFT JOIN sequence s2 ON s1.val1 >= s2.val1 LEFT JOIN sequence s3 ON s3.val1 = s2.val1 - 1 AND s2.val2 <> s3.val2 GROUP BY s1.val1 ) a GROUP BY grouping ORDER BY grouping 添加到选择列表中以使订单显而易见,那么您将获得

grouping

答案 1 :(得分:1)

您需要使用SUM()函数和GROUB BY。

所以要找到你要找的答案

我最近可以得到的是没有添加其他列:

SELECT SUM(val1) as total1, val2 FROM table_name
GROUB BY table_name.val2

结果:

total1 val2
---------
93    1
30    2

您可能需要提供第三列,使三个组分别为

val1 val2 val3(new)
---------------
1    1   1
2    1   1
3    1   1
...  ..  ..
6    2   2
7    2   2
...  ..  ..
11   1   3
12   1   3
...  ..  ..
15   1   3

然后您的SQL查询变为:

SELECT SUM(val1) as total2, val2 FROM table_name
GROUB BY table_name.val2, table_name.val3

结果:

total1 val2
---------
15    1
30    2
78    1

参考enter link description here

答案 2 :(得分:0)

试试这个

    select sum(val1) as val1, val2 from table1
    group by val2