仅对一列使用 WHERE 子句

乔治·米切夫

我有一个查询

SELECT COUNT(dog.id) as dogs_count, SUM(dog.age) AS total_age WHERE dog.owner IS NULL; 

我有一只桌犬,我需要返回所有狗的年龄总和。狗可能有主人,也可能没有主人。我需要返回所有没有主人的狗的数量。到目前为止一切顺利 - WHERE 子句返回了所有没有主人的狗,但现在我得到了所有流浪狗的总和,而不是所有狗的总和。如何仅将 WHERE 用于一行或以其他方式使用?

我有两只狗,每只都是 2 岁。其中一只狗没有主人。查询应为 dog_count 返回 1(因为只有一个没有所有者),为 total_age 返回 4,因为狗的年龄加起来是 4

戈登·利诺夫

如果你想要分别流浪和宠物,那么你可以使用聚合:

SELECT (CASE WHEN d.owner IS NULL THEN 'stray' ELSE 'pet' END) as status,
       COUNT(*) as dogs_count, SUM(d.age) AS total_age
FROM dogs d
GROUP BY status;

您还可以使用条件聚合将所有值放在一行中:

SELECT COUNT(*) as dogs_count, SUM(d.age) AS total_age,
       SUM(d.owner IS NULL) as num_strays,
       SUM(CASE WHEN d.owner IS NULL THEN d.age ELSE 0 END) as strays_age
FROM dogs d

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章