Ответ 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
Для некоторых людей это может выглядеть очень просто, но я просто не могу его получить.
У меня несколько запросов 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%'
и так далее...
Что будет более эффективным способом написания этого запроса. Я сгущал кучу похожих вопросов, но я не мог заставить их работать. Поэтому любая помощь очень ценится.
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
Вы можете использовать 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