在SQL查询中,我们如何通过一个总括术语来引用列中的某些值?



我在一个名为" playson "的表中列出了表演者和他们各自使用的乐器。

这些乐器中有各种各样的吉他,如主吉他、节奏吉他和原声吉他。

我想计算不同乐器的数量。例如,列表看起来像这样:

create or replace view instrument_count
as
select distinct instrument from playson 
music=# select * from instrument_count;
instrument    
-----------------
violin
guitars
lead guitar
synthesizer
percussion
mandolin
flute
rythm guitar
bass
keyboard
drums
banjo
tambourine
saxophone
acoustic guitar
(15 rows)

然而,问题是我想把原声吉他、铅吉他和节奏吉他简单地算作"吉他"(即作为一种独特的乐器)。

所以这个数字应该是12种不同的乐器,因为"guitars"代表了原声、主音和节奏。

我可以在查询期间将这些吉他归类到一个总称下吗?? 我通常会把原声、节奏和主音从统计中排除,但我遇到的问题是,表演者只弹"主吉他",但由于我独特的乐器列表中包括"吉他"而不包括"主吉他",所以他们根本不被认为是在演奏任何乐器。

如果我能创建一个视图,将"吉他"、"主吉他"、"节奏吉他"one_answers"原声吉他"在所有表的所有实例中简单地计数为"吉他",那将会很有用。

我不能更改原始列。我只能使用视图

更新:I have try this:

create or replace view instrument_list
as
select performer, replace(replace(replace(instrument, 'lead guitar', 'guitars'),'rythm guitar' ,'guitars'),'acoustic guitar' ,'guitars' ) as instrument
from playson
;
-- Compute total instruments
create or replace view instrument_count
as
select distinct instrument from instrument_list 

这似乎可以解决问题,但它非常混乱。还有什么更有说服力的途径吗?谢谢。

是否可以这样写:

Select distinct case when instrument like '%guitar%' then 'guitar' else instrument end

是你想要的。这里你得到了所有不同的乐器,当其中一个包含弦乐器时,它被简化为吉他。

相关内容

  • 没有找到相关文章

最新更新