如何根据同一查询中的条件计算所有记录和部分记录?

问题描述 投票:-1回答:1

我在sql中尝试,使用此命令

SELECT year(datecreated) as tahun, jenis_kelamin, COUNT(jenis_kelamin) as jumlah
from santri
GROUP by jenis_kelamin, tahun

但它显示这样

+------+-------------+-----------+
| Tahun|jenis_kelamin| JUmlah    |
+------+-------------+-----------+
| 2009 |    Laki_laki| 5         |
+------+-------------+-----------+
|2010  |  Perempuan  | 7         |
+------+-------------+-----------+
|2010  |  laki-laki  | 6         |
+------+-------------+-----------+

我想在这样的SQL中查看

+------+-----------+-----------+-----+
| Tahun| laki-laki | perempuan |Jumlah
+------+-----------+-----------+-----+
| 2009 |    5      | 0         | 5   |
+------+-----------+-----------+-----+
| 2    |    6      | 7         | 13  |
+-----+------------+-----------+-----+

我试图修改我的命令,但仍然不喜欢这个

sql
1个回答
1
投票

您似乎想要条件聚合:

SELECT YEAR(datecreated) as tahun,
       SUM(CASE WHEN jenis_kelamin = 'laki-laki' THEN 1 ELSE 0 END) as lakilaki,
       SUM(CASE WHEN jenis_kelamin = 'Perempuan' THEN 1 ELSE 0 END) as Perempuan,
       COUNT(*) as jumlah
from santri
GROUP by tahun;

我将第二行中的tahun值解释为拼写错误。

© www.soinside.com 2019 - 2024. All rights reserved.