[英]SQL count how many rows have the same value and do the sum on condition
我今天有一个问题要问你。 我有这张桌子
奇数 | 风险 | 结果代码 | 最后结果 |
---|---|---|---|
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个 |
对于这份工作,我需要
和
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
我可以获得“相等”列。
风险 | 结果代码 | 最后结果 | 平等的 |
---|---|---|---|
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
我可以获得“总计”列。
现在我还想有一个列,我按“风险”分组并对“相等”列求和(进入“更正”),以......
风险 | 更正 | 全部的 |
---|---|---|
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
你的第一个sql太乱了,看不清楚答案
SELECT
`risk`,
COUNT( `risk` ) AS total,
sum(case when resultCode = finalResult then 1 else 0 end) corrects
FROM
`matches`
WHERE
`finalResult` IS NOT NULL
GROUP BY
`risk`
ORDER BY
`risk` DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.