1

我有这张桌子

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),我希望国家也出现在查询中。

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

4

1 回答 1

8

您需要使用SUM()which 是一个聚合函数,并按它们对它们进行分组user_id

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

SQLFiddle 演示

更新 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 演示

于 2012-10-19T14:18:41.747 回答