[英]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.