Оператор SQL GROUP BY может использовать только число для группировки? - PullRequest
0 голосов
/ 20 ноября 2018

Я сейчас изучаю SQL, и я немного сбит с толку, когда сталкиваюсь с таким запросом:

SELECT CASE 
        WHEN url like '%abc.com%'THEN 'abc'
      When url like '%def.com%'THEN 'def'
      When url like '%smiley.com%' THEN 'Smiley'
      Else 'others'
      End AS 'sites', count(*)
    FROM websites_sources
    GROUP BY 1;

Приведенный выше запрос работает правильно, но только если оператор GROUP BY использует 1. Если я пишу Group BY «сайты», в результате отображаются только «другие» и общее количество ВСЕХ строк (вместо количества для «других» 'Только и другие сайты).

У меня такой вопрос, поэтому для оператора GROUP BY мы можем использовать только номер для обозначения группировки, а не имя столбца?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 20 ноября 2018

Используйте только одинарные кавычки для констант строки и даты.Никогда не используйте одинарные кавычки для псевдонимов столбцов.Вы просто запутаете себя.

Попробуйте:

SELECT (CASE WHEN url like '%abc.com%' THEN 'abc'
             WHEN url like '%def.com%' THEN 'def'
             WHEN url like '%smiley.com%' THEN 'Smiley'
             ELSE 'others'
         END) AS sites,
        count(*)
FROM websites_sources
GROUP BY sites;

Вы группируете по строке 'sites', которая является константой, а не столбцом с именем sites.

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