【问题标题】:How to add default values to group by & count in PostgreSQL?如何在 PostgreSQL 中将默认值添加到分组依据和计数?
【发布时间】:2021-09-10 17:11:07
【问题描述】:

是否可以将“默认”值设置为groupBy

例如,我有列汽车,其中值是从枚举中插入的(宝马、保时捷、奥迪等)。

我想对这些汽车进行分组和计数:

select brand, count(*)
from cars
group by brand

如果数据库中有所有这些枚举的值,那么它没问题 - 结果是这样的:

BMW | 3
Audi | 4
Jaguar | 5

但如果我在数据库中只有带有 BMW 的汽车,结果只有 BMW:

BMW | 3

这是我的问题 - 如何添加默认字段以获得如下响应:

BMW | 3
Audi | 0
Mercedes | 0

【问题讨论】:

    标签: sql postgresql group-by count


    【解决方案1】:

    您需要以某种方式列出这些值。一种方法使用values 子句:

    select brand, count(c.brand)
    from (values ('BMW'), ('Audi'), ('Jaguar')) v(brand) left join
         cars c
         using (brand)
    group by brand;
    

    实际上,您应该将品牌放在自己的表中,这样您就可以使用:

    select brand, count(c.brand)
    from brands b
         cars c
         using (brand)
    group by brand;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2020-09-09
      • 2018-07-28
      • 2014-10-23
      • 2022-08-04
      • 2023-03-16
      • 2017-10-26
      相关资源
      最近更新 更多