postgresql在基于整数的结果中显示特定的字符串

zyfwsgd6  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(278)

所以我有一张table,上面有汽车和颜色。颜色显示为整数,但我想在select查询中Map它,以便显示相应的颜色。Map表不存在´我不存在,我也不存在´我没有对数据库的写入权限,因此无法创建Map表。该查询仅适用于只允许sql查询的 Jmeter 板。
我有一张这样的table:

|**Color** |**Car**  |     
| 1       | BMW    |    
| 2       | Nissan   |   
| 1       | Tesla   |

还有这个查询

SELECT "Color", count(*)
FROM "Cars"
GROUP BY "Color"

结果如下:

| Color | Count |    
|  1  |   2  |        
|  2  |   1  |

但我想要的是:

| Color | Count |    
| white  |   2  |    
| green  |   1  |

如何编写这样的查询?

lsmd5eda

lsmd5eda1#

如果确实没有参考表,则需要执行以下操作:

with color_names (
  select car,
         color,
         case color
           when 1 then 'green'
           when 2 then 'white'
           else 'unknown'
         end as color_name
    from your_table
)
select color_name, count(*) 
  from color_names
 group by color_name;
kgsdhlau

kgsdhlau2#

好吧,所以“说table不´我不存在,我也不存在´“没有写入权限”。这里有一个非常简单的解决方案:去和你的dba谈谈,然后提出要求。当今it界最愚蠢的想法之一就是开发人员不与dba交谈(几乎和dba不与开发人员交谈一样愚蠢)。与人们普遍认为的相反,你是同一队的。
但是,如果她/他没有响应(因此您无法实现@gordon不重复逻辑的目标),但是有一个解决方法-至少在dba恢复原样之前是这样。您可以创建一个模板cte,它可以根据需要拉入查询。

with color_names (id, name) as
     ( values (1,'White')
            , (2,'Green')
     )

确保存储在整个团队都可以访问的位置。这可以在需要的时候拉进来。
再想一想,你是一个开发人员,所以开发:创建一个返回表的函数。然后,您可以像在表中一样使用这个函数,它有一个巨大的好处—对使用它的所有查询只需一个维护点。与仅仅更新一个表不同,但是比更新多个查询要好得多。
二者都是小提琴的一部分。

相关问题