如何在postgresql中声明变量并获取结果集?

时间:2016-02-02 04:13:39

标签: postgresql variables

我在PostgreSQL中有一个名为Students的表。在该表中,我有StudId, StudNameGender列。我希望在一个函数中的单个结果集中获得表中男女学生的数量。

StudId   StudName    Gender
101      Peter       M
102      George      M
103      Mary        F
104      Rose        F

我已经使用SQL Server和MySQL完成了这项工作。但是我对PostgreSQL没有任何想法。

我是PostgreSQL的新手,有人帮助找到结果。谢谢你的建议。

1 个答案:

答案 0 :(得分:2)

使用两个这样的子选择

select (select count(*) cnt_male from tbl where gender='M') 
      ,(select count(*) cnt_female from tbl where gender='F')

您可以在case这样的功能中使用count()

select count(case when gender='M' then 1 end) cnt_male
      ,count(case when gender='F' then 1 end) cnt_female 
from tbl

结果:

cnt_male cnt_female 
-------- ---------- 
2        2          

编辑:

根据操作update

create function fn_gender_cnt() returns table(tot_male bigint,tot_female bigint)
as
$$

  select count(case when gender='M' then 1 end) cnt_male
      ,count(case when gender='F' then 1 end) cnt_female 
from tbl

$$
language sql

用法:

select * from fn_gender_cnt();

结果:

    tot_male tot_female 
    -------- ---------- 
    2        2