有一张表people,四个字段 
name sex birthday   deathday 查出在2000-01-01 至2008-01-01 之间出生的人数和死亡的人数 
要求: 
1.要按性别分组统计 
2.要求一条sql搞定 
 
 结果要像这样 
    出生   死亡 
男  100   80 
女   95   75  怎么写啊?????<在线等>

解决方案 »

  1.   

    select sex,sum(birthday),deathday from people where sj between ...你没有时间字段啊
      

  2.   

    select sex,sum(birthday),sum(deathday) from people where sj between ... group by sex
      

  3.   

    birthday 和 deathday 就是时间字段啊
      

  4.   

    select sex,name,birthday , deathday  from people
    group by sex ,name,birthday , deathday  
    having deathday between 2000-01-01 and 2008-01-01 
      

  5.   

    表是像这样的
    name sex birthday  deathday
    张三  男  2004-01-01   
    李四  女  1960-01-01  2006-01-01
      

  6.   

    select sex,name,birthday , deathday  from people 
    group by sex ,name,birthday , deathday  
    having deathday birthday>=2000-01-01 and deathday<=2008-01-01 
      

  7.   

    SQL> select * from test;NAME                                                                             SEX BIRTHDAY    DEATHDAY
    -------------------------------------------------------------------------------- --- ----------- -----------
    a                                                                               男 1906-11-8   1976-11-8
    b                                                                               男  1936-11-8   1998-11-8
    c                                                                                女  1986-11-8   
    d                                                                                女  2001-11-8   
    e                                                                              女 1956-11-8   2002-11-2
    f                                                                               男  1956-11-8   2006-3-2
    g                                                                               女 1956-11-8   1999-11-8
    h                                                                               男  1956-11-8   1996-11-8
    i                                                                                女  2007-11-2   9 rows selectedSQL> 
    SQL> select sex 性别, sum(birthday) 出生人数, sum(deathday) 死亡人数
      2    from (select sex,
      3                 case
      4                   when (birthday > to_date('2000-01-01', 'yyyy-mm-dd')) and
      5                        (birthday < to_date('2008-01-01', 'yyyy-mm-dd')) then
      6                    1
      7                   else
      8                    0
      9                 end birthday,
     10                 case
     11                   when (deathday > to_date('2000-01-01', 'yyyy-mm-dd')) and
     12                        (deathday < to_date('2008-01-01', 'yyyy-mm-dd')) then
     13                    1
     14                   else
     15                    0
     16                 end deathday
     17            from test)
     18   group by sex
     19  ;性别   出生人数   死亡人数
    ---- ---------- ----------
    男            0          1
    女            2          1
      

  8.   

    SELECT SEX,SUM(BIRTHDAY),SUM(DEATHDAY)  FROM PEOPLE WHERE BIRTHDAY
    BETWEEN  2000-01-01 and 2008-01-01 OR  DEATHDAY BETWEEN 2000-01-01 and 2008-01-01   GROUP BY SEX