首页 > 解决方案 > SQL 根据同一个 WHERE 子句选择多个计数

问题描述

我的表中有这样的数据:

Number  Date
18-000  2018-01-05  
18-001  2018-01-08
.......
Number  Date
19-350  2019-01-22
19-351  2019-01-22
19-352  2019-01-22
........
Number  Date
20-649  2020-01-24
20-650  2020-01-27

所以每个数字前面的2位数字表示年份。我希望能够计算所有行有多少以 18、19 和 20(分隔)开头。我做了 18 年,它是:

SELECT COUNT(Number) totalSUM
FROM my_table
where Number like N'18-%'

但是我如何才能在一年中用 totalSUM 返回 3 行?

标签: sqlselect

解决方案


您可以简单地取列的左侧 2 个字符Number并按以下方式分组:

SELECT LEFT(Number, 2) AS year,
       COUNT(Number) AS totalSUM
FROM my_table
GROUP BY LEFT(Number, 2)

样本数据的输出:

year    totalSUM
18      2
19      3
20      2

dbfiddle 上的 MySQL 演示

dbfiddle 上的 SQL Server 演示


推荐阅读