我有一个这样的数据库:第一列是城市的名称。A,B和C是具有二进制数据1(是)和0(否)的列。
(数据库名称-D1)
City A B C
---- ------------ ----------- --------
Boston 1 1 1
Chicago 1 0 0
Boston 1 0 0
Boston 1 1 0
Chicago 1 1 0
Run Code Online (Sandbox Code Playgroud)
我想对这些城市进行分组,并在A,B和C列中为我提供1的计数,如下所示
City Count A Count B Count C
---- ------------ ----------- --------
Boston 3 2 1
Chicago 2 1 0
Run Code Online (Sandbox Code Playgroud)
以下代码将给我第一栏。有没有一种方法可以通过group by使用单个查询获取所有三列?
SELECT City, COUNT(A) as Count A
FROM D1
GROUP BY City
Where City.A = 1
Run Code Online (Sandbox Code Playgroud)
基本上,您可以使用代替计数sum()。
SELECT City
,Sum(A) as CountA
,Sum(B) as CountB
,Sum(C) as CountC
FROM D1
GROUP BY City
Run Code Online (Sandbox Code Playgroud)
如果列A, B, C是bit数据类型,则需要将其转换为允许聚合的数据类型,即integer。
SELECT City
,Sum(cast(A as int)) as CountA
,Sum(cast(B as int)) as CountB
,Sum(cast(C as int)) as CountC
FROM D1
GROUP BY City
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |