总和值(同一列)

时间:2012-10-19 14:17:22

标签: mysql sql

我有这张桌子

user_id     time_completed
    4           86.30887
    5           57.81364
    5           35.50281
    5           10.00000
    5           74.19355
    5           31.91489
    6           15.00000
    6           20.50000

我需要为每个用户总结所有时间,如下所示:

user_id     time_completed
4           86.30887
5           209.42489
6           35.50000

这是我获得第一张表格的方式:

$result = mysql_query ("SELECT user_id,time_completed FROM `mytable` ORDER BY  `mytable`.`user_id` ASC;" )

有什么想法吗?

修改 如果我需要将user_id替换为下表中的名称(db_users),该怎么办?

id          username
1           admin
2           peter
3           tom
4           user
5           joey
6           helen

EDIT2: 我已修改此表(db_users),我希望country也出现在查询中。

id          username        country
1           admin           ES
2           peter           IT
3           tom             US
4           user            GB
5           joey            GE
6           helen           FR

像这样:

user_id     time_completed      country
4           86.30887            GB
5           209.42489           GE
6           35.50000            FR

看看这里:http://sqlfiddle.com/#!2/24d1b/11

1 个答案:

答案 0 :(得分:8)

您需要使用SUM()这是一个聚合函数,并按user_id

对它们进行分组

<击>

<击>
SELECT user_ID, SUM(time_COmpleted) totalTime
FROM tableName
GROUP BY user_ID

SQLFiddle Demo

<击>

更新1

SELECT b.username, SUM(time_COmpleted) totalTime
FROM tableName a 
      INNER JOIN  db_users b
        ON a.user_id = b.id
GROUP BY b.username

SQLFiddle Demo