gpt4 book ai didi

java - 你能在一个 SQL 语句中返回多个 COUNTs 吗?

转载 作者:行者123 更新时间:2023-11-29 07:42:47 24 4
gpt4 key购买 nike

我正在使用 Java 和 SQL,我正在尝试清点动物园中的所有山羊。我知道我可以使用以下查询:

  SELECT COUNT(1) FROM PettingZoo pz WHERE pz.animalType = 'GOAT'

很简单。现在,假设山羊有以下三种颜色之一:棕色、黑色或灰色。如果我想统计每种颜色的数量,我可以执行以下查询:

  SELECT COUNT(1) FROM PettingZoo pz WHERE pz.animalType = 'GOAT' AND
pz.animalType.color = 'BROWN'

SELECT COUNT(1) FROM PettingZoo pz WHERE pz.animalType = 'GOAT' AND
pz.animalType.color = 'BLACK'

SELECT COUNT(1) FROM PettingZoo pz WHERE pz.animalType = 'GOAT' AND
pz.animalType.color = 'GREY'

此方法有效,但速度较慢。这样做会打开表格四次:一次获取总数,另外 3 次获取单个颜色。 有没有办法在一个查询中返回所有四种颜色?

编辑:为清楚起见,假设有 15 只山羊。 9 个是棕色的,0 个是黑色的,6 个是灰色的。第一个查询将返回 15。第二个将返回 9。第三个和最后一个查询将分别返回 0 和 6。我正在寻找一次返回所有四个值的一个(所以我不是在不同的时间读取同一个表)。可能是数组? { 15, 9, 0, 6 }

最佳答案

  SELECT SUM(case when pz.animalType.color = 'BROWN' then 1 else 0 end) as browns,
SUM(case when pz.animalType.color = 'BLACK' then 1 else 0 end) as blacks,
SUM(case when pz.animalType.color = 'GREY' then 1 else 0 end) as greys ,
COUNT(1) as total
FROM PettingZoo pz WHERE pz.animalType = 'GOAT' AND
(
pz.animalType.color = 'BROWN' or
pz.animalType.color = 'BLACK' or
pz.animalType.color = 'GREY'
)
WHERE pz.animalType is not null

关于java - 你能在一个 SQL 语句中返回多个 COUNTs 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28572532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com