与SUM分开

时间:2014-12-16 09:31:08

标签: mysql sql select group-by sum

我有一个mysql连接结果,看起来像这样。

ID | Name | Score | SomeID
---------------------------
1  | abc  |  100  |  2 
1  | abc  |  100  |  2
1  | abc  |  100  |  3
1  | abc  |  100  |  3
1  | abc  |  100  |  4
1  | abc  |  100  |  4

我希望此连接结果的结果为sum 像

ID | Name | SUM(Score) | SomeID
---------------------------
1  | abc  |    200     |  2
1  | abc  |    200     |  3
1  | abc  |    200     |  4

这个问题有没有解决办法!任何帮助?

8 个答案:

答案 0 :(得分:1)

试试这个:

SELECT ID, Name, SUM(Score), SomeID
FROM tableA 
GROUP BY ID, Name, SomeID;

答案 1 :(得分:0)

你需要总和和分组

select
id,
name,
sum(Score) as total,
SomeID
from table_name
group by Name,SomeID

更新: Mysql可以灵活地在选择中使用聚合函数,然后在

组中不使用它们

但许多RDBMS不喜欢它,在这种情况下,你必须在group by子句中添加它们。所以作为标准,它应该是 -

group by id, Name,SomeID

答案 2 :(得分:0)

试试这个:

  SELECT ID,
         Name,
         SUM(Score) total,
         SomeID
    FROM table1
GROUP BY ID,
         Name, 
         SomeID

您可以在SQLFiddle here上查看演示。

答案 3 :(得分:0)

尝试在查询中使用group by子句。在结果集中按SomeId对查询进行分组,以获得所需的输出

答案 4 :(得分:0)

按条款使用分组

select
id,
name,
sum(Score) as total,
SomeID
from table_name
group by name,SomeID,ID

答案 5 :(得分:0)

如果您只是想制作上述内容,那么您基本上是在尝试:

SELECT 
id, name, sum(score), some_id
FROM table1
group by id, name,some_id

正如您所说,这不是一个表,而是一个连接结果。 如果连接结果看起来像(可能是任何东西)。

SELECT table1.id, table2.name, table2.score, table1.some_id
FROM table1 JOIN table2 ON table1.id=table2.table1_id

您需要做的就是使用连接包装查询并为其添加别名。

SELECT 
x.id, x.name, x.sum(score), x.some_id
FROM 
(SELECT table1.id, table2.name, table2.score, table1.some_id
FROM table1 JOIN table2 ON table1.id=table2.table1_id) x
GROUP BY x.id, x.name, x.some_id

答案 6 :(得分:0)

您只需使用数据库的聚合函数:

 SELECT ID, Name,SUM(Score) as "SUM(Score)",SomeID
 FROM table_name
 GROUP BY ID,Name,SomeID
 ORDER BY 4;

答案 7 :(得分:0)

事情很简单:

SELECT ID, Name,SUM(Score),SomeID
 FROM table_name
 GROUP BY SomeID;