我有一个数据库表events
和一个表bets
。针对特定赛事的所有投注均位于bets
表中,而有关赛事的信息则存储在events
表中。
假设我有这些表:
events table:
id event_title
1 Call of Duty Finals
2 DOTA 2 Semi-Finals
3 GTA V Air Race
bets table:
id event_id amount
1 1 $10
1 2 $50
1 2 $100
1 3 $25
1 3 $25
1 3 $25
我希望能够按受欢迎程度
(即该赛事的下注数量)和奖品
(即该赛事的总金额)进行排序。
按奖品排序
显然这个查询不起作用,但我想做这样的事情:
SELECT * FROM bets GROUP BY event_id SORT BY amount
上述查询中的 amount
应该是该 event_id
的所有投注金额加在一起的累积值,因此此查询将返回
Array (
[0]=>Array(
'event_id'=>2
'amount'=>$150
)
[1]=>Array(
'event_id'=>3
'amount'=>$75
)
[2]=>Array(
'event_id'=>1
'amount'=>$10
)
)
按受欢迎程度排序
显然这个查询也不起作用,但我想做这样的事情:
SELECT * FROM bets GROUP BY event_id SORT BY total_rows
上面查询中的 total_rows
应该是 bets
表中存在的行数加在一起,因此此查询将返回
Array (
[0]=>Array(
'event_id'=>3
'total_rows'=>3
)
[1]=>Array(
'event_id'=>2
'total_rows'=>2
)
[2]=>Array(
'event_id'=>1
'total_rows'=>1
)
)
我不一定需要它返回 total_rows
值,因为我可以计算该值,但它确实需要按特定 event_id
的出现次数进行排序> 在赌注
表中。
最佳答案
我认为 count 和 sum 是你的 friend :
SELECT COUNT(event_id) AS NumberBets,
SUM(amount) AS TotalPrize
FROM bets
GROUP BY event_id
应该可以解决问题。 然后您可以根据需要按投注数(受欢迎程度)或总奖金进行排序。仅当您想要事件标题时才需要加入。
关于mysql - 按累积列值对 mysql 结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34867721/