gpt4 book ai didi

php - 对mysql数据进行计数和分组

转载 作者:行者123 更新时间:2023-11-29 02:21:24 25 4
gpt4 key购买 nike

假设我有一个包含这样数据的表格 - 一个假设的赛车游戏

在每场游戏结束时,用户的姓名、他们在游戏中的位置以及他们赢得的奖金都会添加到表格中

 *****************************************
| name | place | date | winnings |
| bob | 1 | 2015-07-08 | 100 |
| bob | 2 | 2015-07-07 | 75 |
| john | 1 | 2015-07-07 | 100 |
| john | 1 | 2015-07-04 | 100 |
| sarah | 9 | 2015-07-05 | 1000 |
*****************************************

我会使用下面的查询来获取这个

 select h.name, z.place, z.date, z.winnings from races as z, users as h where h.id  = z.user_id order by date desc 

我的问题是

我怎样才能让它输出这样的东西? (将奖金加在一起并排序)

 **************************
| name | total_winnings |
| sarah | 1000 |
| john | 200 |
| bob | 175 |
**************************

以及他们赢了多少次(排在第一位)如何排序

 ***************************
| name | won_first_place |
| john | 2 |
| bob | 1 |
| sarah | 0 |
***************************

谢谢

最佳答案

您可以类似地处理这两个查询,因为它们都需要按用户分组。

SELECT 
users.name,
SUM(races.winnings) AS total_winnings
FROM users INNER JOIN races ON users.id = races.user_id
GROUP BY users.id
ORDER BY SUM(races.winnings) DESC

应该让您获得总奖金,并且

SELECT 
users.name,
SUM(CASE WHEN races.place=1 THEN 1 ELSE 0 END) AS won_first_place
FROM users INNER JOIN races ON users.id = races.user_id
GROUP BY users.id
ORDER BY SUM(CASE WHEN races.place=1 THEN 1 ELSE 0 END) DESC

应该让您知道用户获得第一名的次数。

当您使用 GROUP BY 时,您可以对分组行中的列使用许多不同的聚合函数,例如 SUM。您可以查看 MySQL documentation其他选项。

关于php - 对mysql数据进行计数和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com