почему двойное двоеточие не будет работать в случае заявления - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу пометить имена хостов с помощью '::' (этот символ), чтобы они были помечены как облако, а все остальное - как "не облако".

Я пытался использовать оператор like, он не работает, мой результатпомечает все имена хостов не облачными

select a.department, count(host_name),
(CASE
   WHEN host_name like '%::%' THEN 'Cloud'
   ELSE 'Not cloud'
END) as cloud_instance
from 
table a

Ожидаемый результат: если у меня есть имя '::' в имени моего хоста, то оно должно выглядеть как облако.

1 Ответ

0 голосов
/ 18 апреля 2019

Ваш текущий запрос не имеет смысла, потому что он вызывает функцию COUNT(), функцию уровня таблицы, а также отдельные столбцы уровня строки.Я подозреваю, что это то, что вы пытаетесь сделать:

SELECT
    a.department,
    COUNT(a.host_name) AS dept_cnt,
    COUNT(CASE WHEN a.host_name LIKE '%::%' THEN 1 END) AS cloud_cnt,
    COUNT(CASE WHEN a.host_name NOT LIKE '%::%' THEN 1 END) AS no_cloud_cnt
FROM yourTable a
GROUP BY
    a.department;

Здесь мы агрегируем по отделам, и для каждого отдела получаем общее количество, количество облачных и не облачных вычислений.

...