1

这是一个复杂的查询,我希望通过一个语句来实现它,而不是在 PHP 中处理数组值。

实现所需的输出:

User    Jobs    Total
John D. 5       $1245.67
Mary L. 3       $800.56

到目前为止,这是我的查询:

SELECT
  SUM(job.cost) AS sum,
  COUNT(DISTINCT job.user) as count,
  user.id, user.firstname, user.lastname
FROM      `job`
LEFT JOIN `user` ON job.user = user.id
GROUP BY user.id

但是计数值是错误的:它是不同的用户,所以当然每个人都会出错。我该如何解决?

桌子user

id, name, etc.

桌子job

id, user, cost

一对多user_job


更新

这似乎工作正常:

SELECT 
  SUM(job.cost) AS sum,
  COUNT(1) as count,
  user.id, user.firstname, user.lastname
FROM `job`
LEFT JOIN `user` ON job.user = user.id
GROUP BY user.id
4

1 回答 1

2
SET @seq = 0;

SELECT place FROM

(SELECT
  @seq := @seq + 1 AS place
  SUM(job.cost) AS sum,
  COUNT(1) as count,
  user.id, user.firstname, user.lastname
FROM      `job`
LEFT JOIN `user` ON job.user = user.id
GROUP BY user.id
ORDER BY COUNT(1) DESC) 

AS list
WHERE list.id = 'my_user_id'
于 2012-06-27T21:50:08.780 回答