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

时间:2019-03-11 14:48:47

标签: sql

我在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  |
+-----+------------+-----------+-----+

我尝试修饰我的迷信,但还是不喜欢

1 个答案:

答案 0 :(得分: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值解释为错字。