请教一个复杂的多结果分组统计的SQL语句写法

上一篇 / 下一篇  2007-07-03 16:18:19

查看( 162 ) / 评论( 3 )
要显示的结果集如下:
序号   投诉类型    数量  已回复数 未回复数
1        投诉建议类型   2030       2029              1
2            服务质量    1230       3329              25
3             银行缴费     230       7329              1235
…………
TABLE有两张:一个是CATEGORY_TABLE另一个是USER_PROBLEM_TABLE 两张表是通过CATEGORY_ID外键关联
USER_PROBLEM_TABLE中有REPLAY_STATUS字段0 表示未回复,1表示回复.类型的名称CATEGORY_NAME在CATEGORY_TABLE中。
现在需要通过SQL语句group by 及count各分类的总记录条数,回复数及未回复数。请问这能用一条SQL语句实现上述结果集吗?

TAG:

bell6248的个人空间 bell6248 发布于2007-07-03 16:25:51
[PHP]

如下:

select rownum        "序号",
       CATEGORY_NAME "投诉类型",
       cnt           "数量",
       reply         "已回复数",
       no_reply      "未回复数"
  from (select a.CATEGORY_NAME,
               count(*) cnt,
               sum(decode(b.REPLAY_STATUS, 1, 1, 0)) reply,
               sum(decode(b.REPLAY_STATUS, 0, 1, 0)) no_reply
          from CATEGORY_TABLE a, USER_PROBLEM_TABLE b
         where a.CATEGORY_ID = b.CATEGORY_ID
         group by a.CATEGORY_NAME);


[/PHP]
seron的个人空间 seron 发布于2007-07-03 16:57:59

QUOTE:

最初由 bell6248 发布
[B][PHP]

如下:

select rownum        "序号",
       CATEGORY_NAME "投诉类型",
       cnt           "数量",
       reply         "已回复数",
       no_reply      "未回复数"
  from (select a.CATEGORY_NAME,
               count(*) cnt,
               sum(decode(b.REPLAY_STATUS, 1, 1, 0)) reply,
               sum(decode(b.REPLAY_STATUS, 0, 1, 0)) no_reply
          from CATEGORY_TABLE a, USER_PROBLEM_TABLE b
         where a.CATEGORY_ID = b.CATEGORY_ID
         group by a.CATEGORY_NAME);


[/PHP] [/B]
非常感谢。这正是我要的结果,呵呵,刚发现前面一次在CATEGORY_NAME那小了一个逗号,回贴的时候发现bell6248又编辑一次加上了。可见bell6248非常有责任感及热心,再一次表示感情与敬意.在实现的结果同时也学习了一下decode的用法.
dinner1007的个人空间 dinner1007 发布于2007-07-03 17:37:46
PUB热心人还是挺多D
我来说两句

(可选)

日历

« 2009-01-08  
    123
45678910
11121314151617
18192021222324
25262728293031

我的存档

数据统计

  • 访问量: 835
  • 日志数: 9
  • 建立时间: 2008-01-18
  • 更新时间: 2008-01-18

RSS订阅

Open Toolbar