Подтвердить что ты не робот

Несколько COUNT SELECTS из одной таблицы в одном запросе

Для некоторых людей это может выглядеть очень просто, но я просто не могу его получить.
У меня несколько запросов SELECT из MS-SQL из той же таблицы снова и снова:

SELECT count(Page) as tAEC
FROM someTable
WHERE Page LIKE '%AEC%'

следующий

SELECT count(Page) as tTOL
FROM someTable
WHERE Page LIKE '%TOL%'

и так далее...

Что будет более эффективным способом написания этого запроса. Я сгущал кучу похожих вопросов, но я не мог заставить их работать. Поэтому любая помощь очень ценится.

4b9b3361

Ответ 1

SELECT sum(case when Page LIKE '%AEC%' then 1 end) as tAEC, 
    sum(case when Page LIKE '%TOL%' then 1 end) as tTOL 
FROM someTable 

Ответ 2

Вы можете использовать GROUP BY Page

SELECT
  Page
, COUNT(Page) as "nb"
FROM someTable
GROUP BY Page

Вы также можете сделать GROUP BY CASE...

SELECT
  CASE
    WHEN Page LIKE '%AEC%' THEN "AEC"
    WHEN Page LIKE '%TOL%' THEN "TOL"
    ELSE ""
  END AS "type"
, count(Page) as "nb"
FROM someTable
GROUP BY type

Вы также можете COUNT IF

SELECT
  COUNT(IF(Page LIKE '%AEC%', 1, NULL) THEN "AEC"
, COUNT(IF(Page LIKE '%TOL%', 1, NULL) THEN "TOL"
FROM someTable