有张投票记录表:
id post_id(帖子ID),post_title(帖子标题),source_ip(投票者IP),create_time(投票时间)
1  2513              a                  127.0.0.1 
1  2511              b                  127.0.0.1       
1  2511              b                  127.0.0.1       
1  2512              c                  127.0.0.1
先不管表的设计存在的问题
现在要求查询出总帖子数,总投票数,投票数最多的帖子信息和获得具体多少投票数,该最多投票数占总投票数的百分比
一次全部查上来我会放到一个辅助类里面                

解决方案 »

  1.   

    WITH TEST AS (
    SELECT '1' AS ID,'2513' AS post_id,'A' AS post_title,'127.0.0.1' AS source_ip,'2013-2-19' AS create_time FROM DUAL
    UNION ALL
    SELECT '1' AS ID,'2511' AS post_id,'B' AS post_title,'127.0.0.1' AS source_ip,'2013-2-19' AS create_time FROM DUAL
    UNION ALL
    SELECT '1' AS ID,'2511' AS post_id,'B' AS post_title,'127.0.0.1' AS source_ip,'2013-2-19' AS create_time FROM DUAL
    UNION ALL
    SELECT '1' AS ID,'2512' AS post_id,'C' AS post_title,'127.0.0.1' AS source_ip,'2013-2-19' AS create_time FROM DUAL
    )
    SELECT * FROM (
    SELECT RANK()OVER(ORDER BY GCN DESC) AS RN,GCN/CN,T.* FROM (
    SELECT COUNT(1)OVER() AS CN,COUNT(1)OVER(PARTITION BY post_id) AS GCN,TEST.* FROM TEST)T) WHERE RN = 1