日期:2014-05-17  浏览次数:20968 次

求个SQL语句
有张投票记录表:
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
先不管表的设计存在的问题
现在要求查询出总帖子数,总投票数,投票数最多的帖子信息和获得具体多少投票数,该最多投票数占总投票数的百分比
一次全部查上来我会放到一个辅助类里面                

------解决方案--------------------

------解决方案--------------------
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