У меня проблема с этим запросом

select alarmas, count(alarmas) 
from lista_equipos 
where alarmas not like'%n/a%' 
group by alarmas;

Результат не суммирует количество основных аварийных сигналов.

Critical    6
Major       1
Major       9

Предупреждение 36 введите описание изображения здесь введите описание изображения здесь

1
Rafael Valbuena 5 Мар 2016 в 00:21

2 ответа

Лучший ответ

Проблема в символе \r. Быстрая починка:

SELECT REPLACE(alarmas, '\r','') AS alarmas, COUNT(alarmas) 
FROM lista_equipos 
WHERE alarmas NOT LIKE '%n/a%' 
GROUP BY REPLACE(alarmas, '\r','');

Правильный способ - очистить данные перед вставкой.

0
Lukasz Szozda 4 Мар 2016 в 21:56

Я не знаю, зачем нам здесь использовать оператор Like. Ниже запрос должен работать:

select alarmas, count(*)
from lista_equipos
where alarmas not like '%N/A%'
group by alarmas

В качестве альтернативы, если мы хотим игнорировать пробелы и регистр (поскольку кажется, что у нас есть значения с пробелами вокруг них), мы можем использовать следующий запрос:

select lower(trim(alarmas)) as alarm, count(*)
from lista_equipos
where alarmas not like '%N/A%'
group by alarm
0
Darshan Mehta 4 Мар 2016 в 21:37