代码之家  ›  专栏  ›  技术社区  ›  DineshDB

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

  •  0
  • DineshDB  · 技术社区  · 9 年前

    我在PostgreSQL中有一个名为Students的表。我在那张桌子上 StudId, StudName Gender 柱。我想在一个函数的单个结果集中获得表中男女学生的数量。

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

    我已经用SQL Server和MySQL完成了这项工作。但我不知道如何用PostgreSQL实现这一点。

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

    1 回复  |  直到 9 年前
        1
  •  2
  •   Community CDub    7 年前

    像这样使用两个子选择

    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