我有一张这样的表:
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
我不知道查询是怎么样的。 也请原谅我这个糟糕的头衔。我不知道应该叫什么。
由于
答案 0 :(得分:3)
由于MySQL缺乏分析功能,有点复杂的版本;我假设它是你需要的SUM
的{{1}};
val1
如果您将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
答案 2 :(得分:0)
试试这个
select sum(val1) as val1, val2 from table1
group by val2