【发布时间】:2021-11-21 04:11:46
【问题描述】:
今天我有一个问题要问你。我有这张桌子
| oddId | risk | resultCode | finalResult |
|---|---|---|---|
| 1 | 6.66667 | 2 | 1 |
| 2 | 7.14286 | 2 | 1 |
| 3 | 8.33333 | 2 | 1 |
| 4 | 8.33333 | 2 | 2 |
| 5 | 10 | 2 | 1 |
| 6 | 10 | 2 | 2 |
| 7 | 10 | 2 | 2 |
| 8 | 10 | 2 | 2 |
| 9 | 11.1111 | 1 | 2 |
| 10 | 11.1111 | 2 | 2 |
| 11 | 12.5 | 2 | 1 |
| 12 | 12.5 | 2 | 2 |
| 13 | 12.5 | 1 | 1 |
| 14 | 12.5 | 2 | 1 |
| 15 | 12.5 | 2 | 1 |
| 16 | 12.5 | 1 | 2 |
| 17 | 12.5 | 1 | 1 |
| 18 | 12.5 | 1 | 2 |
| 19 | 12.5 | 2 | 1 |
| 20 | 14.2857 | 2 | 2 |
| 21 | 14.2857 | 1 | 2 |
| 22 | 14.2857 | 2 | 2 |
| 23 | 16.6667 | 2 | 2 |
| 24 | 16.6667 | 1 | 2 |
| 25 | 16.6667 | 1 | 1 |
我需要这份工作
- 按“风险”对行进行分组
- 计算有多少行具有相同的“风险”值
- 计算“resultCode”和“finalResult”中有多少行具有相同的值
有
SELECT `risk`, `resultCode`, `finalResult`,
( SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
FROM matches
WHERE `resultCode` = t.`finalResult`
AND `oddId` = t.`oddId`
) equal
FROM matches t
WHERE `finalResult` IS NOT NULL
ORDER BY `t`.`risk` ASC
我可以得到“相等”的列。
| risk | resultCode | finalResult | equal |
|---|---|---|---|
| 6.66667 | 2 | 1 | 0 |
| 7.14286 | 2 | 1 | 0 |
| 8.33333 | 2 | 1 | 0 |
| 8.33333 | 2 | 2 | 1 |
| 10 | 2 | 1 | 0 |
| 10 | 2 | 2 | 1 |
| 10 | 2 | 2 | 1 |
| 10 | 2 | 2 | 1 |
| 11.1111 | 1 | 2 | 0 |
| 11.1111 | 2 | 2 | 1 |
| 12.5 | 2 | 1 | 0 |
| 12.5 | 2 | 2 | 1 |
| 12.5 | 1 | 1 | 1 |
| 12.5 | 2 | 1 | 0 |
| 12.5 | 2 | 1 | 0 |
| 12.5 | 1 | 2 | 0 |
| 12.5 | 1 | 1 | 1 |
| 12.5 | 1 | 2 | 0 |
| 12.5 | 2 | 1 | 0 |
| 14.2857 | 2 | 2 | 1 |
| 14.2857 | 1 | 2 | 0 |
| 14.2857 | 2 | 2 | 1 |
| 16.6667 | 2 | 2 | 1 |
| 16.6667 | 1 | 2 | 0 |
| 16.6667 | 1 | 1 | 1 |
与
SELECT `risk`, COUNT(`risk`) as total
FROM `matches`
WHERE `finalResult` IS NOT NULL
GROUP BY `risk`
ORDER BY `risk` DESC
我可以得到“总计”列。
现在我还想有一列按“风险”分组并对“相等”列求和(归为“更正”),以...
| risk | corrects | total |
|---|---|---|
| 6.66667 | 0 | 1 |
| 7.14286 | 0 | 1 |
| 8.33333 | 1 | 2 |
| 10 | 3 | 4 |
| 11.1111 | 1 | 2 |
| 12.5 | 3 | 9 |
| 14.2857 | 2 | 3 |
| 16.6667 | 2 | 3 |
但是我不知道该怎么做...谁能帮帮我? 非常感谢
MySQL - MyISAM - 5.6.48-88.0
【问题讨论】:
-
标记您的特定数据库并说明其版本。
-
完成,MySQL 5.6.48-88.0
-
你应该切换到 InnoDB。 (不,它不会解决这个问题,但出于许多其他原因,它是可取的。)