如何查询显示同一个表中2个不同列的计数?

时间:2017-08-02 20:00:39

标签: sql join

我有两张桌子TypeOfFruit和Fruit(有一个TypeOfFruit的FK),如下所示:

TypeOfFruit

ID      Name
1       Apples
2       Bananas

水果

ID      TypeId      Expired
1       1           FALSE
2       1           TRUE
3       1           TRUE

基本上我想创建一个包含以下内容的视图:

FruitStats

Name        total_num       total_expired
Apples      3           2
Bananas     0           0

第一个数字是每种水果的总数,第二个数字是该类型的过期水果数。

我已经拿出以下内容来获取total_num:

CREATE VIEW Fruit_Stats (name, total_num) 
AS SELECT t.name, COUNT(f.id)
FROM TypeOfFruits t LEFT OUTER JOIN Fruits f ON f.type_id = t.id GROUP BY (t.id);

但是除了那个之外我在计算过期时遇到了麻烦。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

你很亲密。 CASE语句将为您提供所需内容:

SELECT t.name, COUNT(f.id), SUM(CASE WHEN expired = "TRUE" THEN 1 ELSE 0 END) as total_expired
FROM TypeOfFruits t LEFT OUTER JOIN Fruits f ON f.type_id = t.id GROUP BY (t.id);