各位大侠,我是新手学习数据库时间不算长,有个问题想咨询一下,我在asp中有个表想统计出来数据,但是不知道如何做,网上查了一些,半明白不明白,我还是做不出来数据表:  id    发布者   新闻题目   新闻内容  审核
-------------------------------------------
  001   用户a    新闻1     内容1     是
  002   用户a    新闻2     内容2     是
  003   用户b    新闻3     内容3     是
  004   用户b    新闻4     内容4     否
  005   用户b    新闻5     内容5     否
  006   用户b    新闻6     内容6     否
  007   用户c    新闻7     内容7     是
  008   用户c    新闻8     内容8     是
  009   用户c    新闻9     内容9     是-------------------------------------------想要统计用户 a,b,c的发稿量和通过审核的发稿量,按发稿通过审核量排序,如何用select 语句选择?需要的效果     用户        发稿量    审核通过量
-------------------------------------------
     用户c       3         3
     用户a      2         2
     用户b      4         1

解决方案 »

  1.   

    --> 测试数据: #T1
    if object_id('tempdb.dbo.#T1') is not null drop table #T1
    create table #T1 (id varchar(3),发布者 varchar(5),新闻题目 varchar(5),新闻内容 varchar(5),审核 varchar(2))
    insert into #T1
    select '001','用户a','新闻1','内容1','是' union all
    select '002','用户a','新闻2','内容2','是' union all
    select '003','用户b','新闻3','内容3','是' union all
    select '004','用户b','新闻4','内容4','否' union all
    select '005','用户b','新闻5','内容5','否' union all
    select '006','用户b','新闻6','内容6','否' union all
    select '007','用户c','新闻7','内容7','是' union all
    select '008','用户c','新闻8','内容8','是' union all
    select '009','用户c','新闻9','内容9','是'select 发布者,count(*) as 发稿量,
    isnull(sum(case when 审核='是' then 1 else 0 end),0) as 审核通过量 
    from #T1
    group by 发布者 order by 审核通过量  desc/*
    发布者   发稿量         审核通过量
    ----- ----------- -----------
    用户c   3           3
    用户a   2           2
    用户b   4           1
    */
      

  2.   

    select 发布者,count(*) as 发稿量,
    isnull(sum(case when 审核='是' then 1 else 0 end),0) as 审核通过量 
    from tb
    group by 发布者 order by 审核通过量  desc
      

  3.   

    select 发布者,count(*) as 发稿量,
    isnull(sum(case when 审核='是' then 1 else 0 end),0) as 审核通过量 
    from tb
    group by 发布者 order by 审核通过量  desc
      

  4.   

    select 用户,count(审核) as 发稿量,sum(case when 审核='是' then 1 else 0 end) as 审核通过量 
    from tb
    grpu by 用户
      

  5.   

    --> 测试数据: #T1(换一种计算方式)
    if object_id('tempdb.dbo.#T1') is not null drop table #T1
    create table #T1 (id varchar(3),发布者 varchar(5),新闻题目 varchar(5),新闻内容 varchar(5),审核 varchar(2))
    insert into #T1
    select '001','用户a','新闻1','内容1','是' union all
    select '002','用户a','新闻2','内容2','是' union all
    select '003','用户b','新闻3','内容3','是' union all
    select '004','用户b','新闻4','内容4','否' union all
    select '005','用户b','新闻5','内容5','否' union all
    select '006','用户b','新闻6','内容6','否' union all
    select '007','用户c','新闻7','内容7','是' union all
    select '008','用户c','新闻8','内容8','是' union all
    select '009','用户c','新闻9','内容9','是'select 发布者,count(*) as 发稿量,
    审核通过量 = (select count(审核) from #t1 where 发布者=a.发布者 and 审核='是') 
    from #T1 a
    group by 发布者 order by 审核通过量  descdrop table #t1 /*
    发布者   发稿量         审核通过量
    ----- ----------- -----------
    用户c   3           3
    用户a   2           2
    用户b   4           1
    */