一个查询中来自同一表的多个COUNT SELECTS

cra*_*xxx 24 sql-server select

对于某些人来说,它可能看起来很简单,但我根本无法得到它.
我一遍又一遍地从同一个表中有多个MS-SQL SELECT查询:

SELECT count(Page) as tAEC
FROM someTable
WHERE Page LIKE '%AEC%'
Run Code Online (Sandbox Code Playgroud)

下一个

SELECT count(Page) as tTOL
FROM someTable
WHERE Page LIKE '%TOL%'
Run Code Online (Sandbox Code Playgroud)

等等...

什么是更有效的方式来编写此查询.我用Google搜索了一堆类似的问题,但我无法让它们中的任何一个起作用.所以任何帮助都非常感谢.

Red*_*ter 68

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 
Run Code Online (Sandbox Code Playgroud)


Pie*_*NAY 7

你可以使用 GROUP BY Page

SELECT
  Page
, COUNT(Page) as "nb"
FROM someTable
GROUP BY Page
Run Code Online (Sandbox Code Playgroud)

你也可以做一个 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
Run Code Online (Sandbox Code Playgroud)

你也可以 COUNT IF

SELECT
  COUNT(IF(Page LIKE '%AEC%', 1, NULL) THEN "AEC"
, COUNT(IF(Page LIKE '%TOL%', 1, NULL) THEN "TOL"
FROM someTable
Run Code Online (Sandbox Code Playgroud)