mysql - 使用 Group by 获取表格的百分比
问题描述
我正在为当地联赛开发一款预测游戏。
比赛由其 SPIELTAG(比赛日)和 MATCH_NR 定义。预测具有匹配和结果(ERGA、ERRGB)
我有一个像这个小提琴一样的表https://www.db-fiddle.com/f/o4NXPFfzod39LpMaTzqz3r/0
我得到了输出来计算每个比赛日和每场比赛的每个结果。
| SPIELTAG | MATCH_NR | ERGA | ERGB | AMOUNT |
| -------- | -------- | ---- | ---- | ------ |
| 4 | 1 | 7 | 1 | 1 |
| 4 | 1 | 7 | 2 | 2 |
| 4 | 1 | 7 | 3 | 5 |
| 4 | 1 | 7 | 4 | 1 |
| 4 | 2 | 1 | 7 | 1 |
| 4 | 2 | 2 | 7 | 6 |
| 4 | 2 | 3 | 7 | 3 |
我想要实现的是,在金额列旁边,例如
| SPIELTAG | MATCH_NR | ERGA | ERGB | AMOUNT | PERC |
| -------- | -------- | ---- | ---- | ------ | ---- |
| 4 | 1 | 7 | 1 | 1 | 11.1%| => 1 / 9
| 4 | 1 | 7 | 2 | 2 | 22.2%| => 2 / 9
| 4 | 1 | 7 | 3 | 5 | 55.5%| => 5 / 9
| 4 | 1 | 7 | 4 | 1 | 11.1%| => 1 / 9
| 4 | 2 | 1 | 7 | 1 | 11.1%| => 1 / 9
| 4 | 2 | 2 | 7 | 5 | 55.5%| => 5 / 9
| 4 | 2 | 3 | 7 | 3 | 33.3%| => 3 / 9
其中 PERC 是每个比赛日 SPIELTAG 的选秀百分比。基本上多久一次的结果,(ERGA,ERRGB)的元组预测每个匹配SPIELTAG,MATCH_NR。
我找到了一个帖子,我可以在其中获得所有选秀权的百分比,但不受比赛日限制,匹配元组。
示例:第 1 场比赛(Spieltag 4,第 1 场比赛)有 9 个预测。
1x:7-1
2x:7-2
5x:7-3
1x:7-4
__
9x -> ALL_COUNTS_PER_MATCH
所以 PERC 应该类似于 'AMOUNT' / ALL_COUNTS_PER_MATCH。
解决方案
我认为您需要另一个组:
SELECT `t`.`SPIELTAG` AS `SPIELTAG`,
`t`.`MATCH_NR` AS `MATCH_NR`,
`t`.`TEAM_A` AS `ERGA`,
`t`.`TEAM_B` AS `ERGB`,
count(0) AS `AMOUNT`,
COUNT(0) / MAX(A.TOTAL_AMOUNT) -- MIN would also work
FROM `TIPPSPIEL_TIPP` `t`
JOIN (
-- Calculate the row count by each different spieltag & match_nr combination
SELECT `t`.`SPIELTAG`,
`t`.`MATCH_NR`,
count(0) AS `TOTAL_AMOUNT`
FROM `TIPPSPIEL_TIPP` `t`
GROUP BY `t`.`SPIELTAG`, `t`.`MATCH_NR`
) A USING (SPIELTAG, MATCH_NR)
GROUP BY `t`.`SPIELTAG`, `t`.`MATCH_NR`, `t`.`TEAM_A`, `t`.`TEAM_B`
;
推荐阅读
- jackson - MockWebServer 返回 Json 但 restTemplate.exchange 总是映射到 null
- netbeans - 禁用 ESC 键以在 IDE 编辑器中滚动视口
- python - 尝试访问 Django 2.2 中的登录 url 时,位于 /en/user/login/ 的 TemplateDoesNotExist
- google-analytics - 希望从 Google 分析中获取实时用户数量
- python - 字符串列表中的公共子字符串
- hive - 对 Hplsql.g4 或 Hive.g4 的数组支持
- python - 初始化许多 redis-py 连接会减慢服务器速度吗?
- tensorflow - 如何在 Optuna SuccessiveHalvingPruner() 中设置最小时期数?
- javascript - Netlify 在导入/导出模块时抛出错误,为什么?
- c++ - 有没有办法限制传递给方法的参数类型?