sqlite 如何获取group_concat中的个人计数,而不总是默认为1

g2ieeal7  于 2023-06-23  发布在  SQLite
关注(0)|答案(1)|浏览(192)

我创建了一个表,看起来像这样:
| UID|城市|类型,类型|宠物|宠物计数|
| - -----|- -----|- -----|- -----|- -----|
| 1|巴黎|房屋||1|
| 2|巴黎|公寓|猫|猫|1|
| 3|伦敦|联排别墅|狗,鸟|2|
| 4|伦敦|树屋|鹰,鱼,仓鼠|3|
| 5个|伦敦|商队|象|1|
| 六|伦敦|小艇||1|
我从下面的查询中得到了这个表:

SELECT uid, city, type, group_concat(o.animals) as pets, count(*) as pet_count

我的目标是建立一个表格,列出每种独特类型的房屋及其所在城市,然后将其宠物连接到一个字段中,然后计算这些宠物。
这就是我所期待的
| UID|城市|类型,类型|宠物|宠物计数|
| - -----|- -----|- -----|- -----|- -----|
| 1|巴黎|房屋||0|
| 2|巴黎|公寓|猫|猫|1|
| 3|伦敦|联排别墅|狗,鸟|2|
| 4|伦敦|树屋|鹰,鱼,仓鼠|3|
| 5个|伦敦|商队|象|1|
| 六|伦敦|小艇|||
我遇到的问题是,计数总是返回1,即使没有计数所有者。我做错了什么?

pnwntuvh

pnwntuvh1#

sum()case子句组合使用如下:

SELECT UID, city, type, group_concat(o.animals) as pets, 
            sum(case when o.animals is not null then 1 else 0 end) as pet_count
...

条件也可以是o.animals <> '',具体取决于您的值是空还是空。

相关问题