试图在QUERY中计算特定项目

时间:2009-11-03 22:59:21

标签: sql count

我目前正在返回一个如下所示的表:

Country  Result
------   -----
Japan    sunk
Japan    sunk
USA      ok
USA      ok

国家/地区和结果是列名

我想知道日本和沉没多少次出现?所以我想要实现的结果是:

country      numSunk
-------      ------
Japan        2
USA          0

我尝试过分组或做一个结果=“沉没”,但我一直在收到错误。有什么想法吗?感谢。

4 个答案:

答案 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为您提供所有没有沉没结果的国家。