如何在列的值上迭代可能的值

时间:2016-05-24 04:18:19

标签: mysql sql

我有一个表,它存储与之关联的名称和数字。这些数字中的每一个都是某种类型。名称和类型的组合是独一无二的。

 name | type | number
---------------------
 a    | t0   | 5
 a    | t1   | 6
 b    | t0   | 7
 c    | t1   | 8

我希望这张表作为结果,显示与该名称相关的数字,无论累积的类型如何。

 name | sum
------------
 a    | 11
 c    | 8
 b    | 7

现在我知道了SUM()函数,到目前为止我写了这个:

SELECT name, SUM( ??SELECT name, SUM(number) WHERE name = 'a'?? ) AS sum
FROM table
ORDER BY sum DESC;

问题是我不知道如何编写SUM()函数的内部部分,因为我不能在函数内部使用SELECT语句。另外,我不知道如何迭代名称列的可能值。

2 个答案:

答案 0 :(得分:1)

您需要使用GROUP BYSUM

SELECT name, SUM(number) AS sum
FROM tableName
GROUP BY name
ORDER BY SUM(number) DESC;  -- or ORDER BY sum DESC; - it is identical

答案 1 :(得分:1)

SELECT NAME, 
       Sum(number) As 'Sum'
FROM   table 
GROUP  BY NAME 
ORDER  BY Sum(number) DESC;