Количество слов в SQL - PullRequest
       17

Количество слов в SQL

0 голосов
/ 28 января 2020

У меня есть список слов, которые мне нужно найти в определенном столбце c, «описание того, что произошло»

, в котором может содержаться до 500 или более символов. У меня есть сценарий ниже, который работает

Однако, как я могу заменить столбец Имя 1.2.3 с реальным именем слова, которое я ищу, с итогом рядом с ним.

Просто не могу заставить его отобразить что-то простое.

 select GROUPING_ID ( Amoxicillin  ,Atorvastatin ) as Name  ,count(*) as Total  
 from ( select case when [description_of_what_happened] like '%Amoxicillin%' 
 then 1 else 0 end as  Amoxicillin ,        
 case when [description_of_what_happened] like '%Atorvastatin%' 
 then 1 else 0 end as  Atorvastatin
 FROM "NAME OF TABLE"    
 group by grouping sets (() ,(Amoxicillin),(Atorvastatin))  
 having  coalesce (Amoxicillin,1)  != 0 and coalesce (Atorvastatin,1)  != 0     
 order by grouping_id (Amoxicillin,Atorvastatin) 

строка 3 - это сумма, которую мне нужно, строка 1 и строка 2, чтобы показать название результата продукта, как показано ниже

 Name                 Total
 1                        7
 2                        9
 3                        4112

1 Ответ

0 голосов
/ 28 января 2020

Вы можете использовать строки вместо флагов:

select coalesce(Amoxicillin, Atorvastatin, 'Total') as Name, 
      count(*) as Total  
from (select (case when [description_of_what_happened] like '%Amoxicillin%' 
                   then 'Amoxicillin'
              end) as Amoxicillin ,        
             (case when [description_of_what_happened] like '%Atorvastatin%' 
                   then 'Atorvastatin'
              end
              ) as Atorvastatin
from "NAME OF TABLE" 
where Amoxicillin is not null or Atorvastatin is not null
group by grouping sets ((), (Amoxicillin), (Atorvastatin))       
order by name;

Обратите внимание, что я также переместил логи c в having в where.

...