我目前正在返回一个如下所示的表:
Country Result
------ -----
Japan sunk
Japan sunk
USA ok
USA ok
国家/地区和结果是列名
我想知道日本和沉没多少次出现?所以我想要实现的结果是:
country numSunk
------- ------
Japan 2
USA 0
我尝试过分组或做一个结果=“沉没”,但我一直在收到错误。有什么想法吗?感谢。
答案 0 :(得分:4)
这应该有效:
SELECT country, COUNT(*) AS sunk
FROM table
WHERE result = "sunk"
GROUP BY country
编辑:如果你想要0行,那么你可以这样做:
SELECT country, SUM(IF(result = "sunk", 1, 0)) AS sunk
FROM table
GROUP BY country
答案 1 :(得分:4)
SELECT country, COUNT(CASE result WHEN 'sunk' then 1 ELSE NULL END) as numSunk
FROM myTable
GROUP BY country
只有在结果为“沉没”时,计数才会递增。
答案 2 :(得分:0)
select country, count(country)
...
where result = "sunk"
group by country
假设这是一个SQL查询
答案 3 :(得分:0)
尝试这样的事情:
SELECT country, count(*) numSunk
FROM table
WHERE result = 'sunk'
GROUP BY country
UNION
SELECT DISTINCT country, 0
FROM table t
WHERE NOT EXISTS
(SELECT 1 FROM table WHERE t.country = country AND result = 'sunk')
第一个SELECT为您提供沉没结果以及沉没计数的所有国家/地区。联合的第二个SELECT为您提供所有没有沉没结果的国家。