有个月份表如下:
table t (month number);
Month is  between 1 and 12.现在我要把月份个数最多的数据抓出来,如果有相等的月份也抓出来,怎么写一个sql实现?

解决方案 »

  1.   

    select month from(
      select month,dense_rank()over(order by count(1) desc)dk 
      from tt group by month)
    where dk=1
      

  2.   

    多谢,,,能解释一下rank over 怎么用吗?
      

  3.   

    dense_rank是一个分析函数
    你查下分析函数的用法
    这里不容易讲清楚
      

  4.   

    /* Formatted on 2009/10/16 14:30 (Formatter Plus v4.8.6) */
    SELECT b.MONTH AS 月份, b.counts AS 出现次数
      FROM (
            /*按月份统计出现个数*/
            SELECT   MONTH, COUNT (MONTH) AS counts
                FROM emp a
            GROUP BY a.MONTH) b
            /*取出现次数最多的月份*/
     WHERE b.counts IN (SELECT MAX (c.counts)
                          FROM (SELECT   MONTH, COUNT (MONTH) AS counts
                                    FROM t a
                                GROUP BY a.MONTH) c)