Mysql 选择按用户花费的金额计算的用户总数
因此,我有一个表Mysql 选择按用户花费的金额计算的用户总数,mysql,sum,Mysql,Sum,因此,我有一个表orders,其结构如下: id | user_id | order_amount | time_started | status 我试图让自给定时间戳以来花费最多的用户(包括用户表)访问他们的信息 选择SUM(不同的'orders.order_amount')作为'amount_total'从'orders'左侧加入'users'ON'orders.user_id'='users.id'WHERE'orders.time_start'>=“1484396552”和'order
orders
,其结构如下:
id | user_id | order_amount | time_started | status
我试图让自给定时间戳以来花费最多的用户(包括用户
表)访问他们的信息
选择SUM(不同的'orders.order_amount')作为'amount_total'从'orders'左侧加入'users'ON'orders.user_id'='users.id'WHERE'orders.time_start'>=“1484396552”和'orders.status'=1按'amount_total'分组的订单。user_id'DESC
但是这个查询是无效的。我预期的结果是:
id | user | id | amount | total | user | data | u from | user | user | data(u from | u users | user | u data)u from(u users | 124
- 单引号而不是反勾号
`
- 在分组之前按排序
- 通过添加到组中的DESC
试试这个:
SELECT `orders`.`user_id`,SUM(`orders`.`order_amount`) AS `amount_total`, `users`.*
FROM `orders`
LEFT JOIN `users`
ON `orders`.`user_id` = `users`.`id`
WHERE `orders`.`time_started` >= 1484396552
AND `orders`.`status` = 1
GROUP BY `orders`.`user_id`
ORDER BY `amount_total` DESC;
这似乎是可行的,但它只需要一个用户,而不是全部需要一个用户?您的意思是什么?此查询不完全正确,在仅使用sql模式的服务器上会失败,\u FULL\u GROUP\u BY,因为GROUP BY被误用了。。。。。阅读@Raymond,它可以在MySQL中开箱即用。如果没有,您可以轻松地将其余列添加到group by子句。@GurV不在最新的Mysql版本上,在该版本中,启用了sql模式ONLY\u FULL\u group\u by。。。但如果是真的,您可以轻松地将其余部分添加到列中