首页 > 解决方案 > 如何在选择postgresql中进行选择

问题描述

我有一个名为 jenis_kelamin 的列,我想在选择查询中显示男性和女性的性别。我有一个这样的查询,但出来的数据仍然是错误的,正确的方法是什么?

SELECT distinct mj.id, mj.nama_pd,
(select distinct count(jenis_layanan) from public.isian_kuis 
 where jenis_kelamin = 'Laki' ) as jumlah_laki,
 (select distinct count(jenis_layanan)
 from public.isian_kuis
 where jenis_kelamin = 'Perempuan' ) as jumlah_perempuan
 FROM public.master_jabatan mj
 join isian_kuis ik on ik.jabatan_id = mj.id
  group by mj.id,mj.nama_pd
   order by mj.id;

我有一个查询图像的示例,这仍然是错误的在此处输入图像描述

正确的数据是 ID 30 有两男一女,ID 29 只有一个女人 在此处输入图像描述

标签: sqlpostgresql

解决方案


无需使用嵌套选择,只需Group By像这样使用:

SELECT distinct mj.id, 
  mj.nama_pd, 
  SUM(CASE WHEN jenis_kelamin = 'Laki' THEN 1 ELSE 0 end) AS jumlah_laki,
  SUM(CASE WHEN jenis_kelamin = 'Perempuan' THEN 1 ELSE 0 end) AS jumlah_perempuan
FROM public.master_jabatan mj
join isian_kuis ik on ik.jabatan_id = mj.id
group by mj.id,mj.nama_pd
order by mj.id;

推荐阅读