ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 统计连续列重复个数

统计连续列重复个数

原创 Linux操作系统 作者:hdzwl 时间:2010-01-03 19:32:58 0 删除 编辑

--统计连续列重复个数

DROP SPECIFIC FUNCTION FRPT @
CREATE FUNCTION FRPT(
    A1 INTEGER,
    A2 INTEGER,
    A3 INTEGER,
    A4 INTEGER,
    A5 INTEGER,
    A6 INTEGER,
    A7 INTEGER,
    A8 INTEGER
)
RETURNS INTEGER
SPECIFIC FRPT
READS SQL DATA
RETURN
  SELECT MAX(T.NUMBERS)
    FROM (
          SELECT T.REPEAT,
                 COUNT(1) NUMBERS
            FROM (
                  SELECT C1 - ROWNUMBER() OVER(PARTITION BY C2 ORDER BY C1) REPEAT,
                         MIN(C1) OVER(PARTITION BY C2) -1 BEGIN
                    FROM TABLE(
                               VALUES (1, A1),
                                      (2, A2),
                                      (3, A3),
                                      (4, A4),
                                      (5, A5),
                                      (6, A6),
                                      (7, A7),
                                      (8, A8)
                              ) T(C1, C2)
                 ) T
           WHERE T.REPEAT = T.BEGIN
           GROUP BY T.REPEAT        
         ) T
@


--测试语句一
SELECT '连续重复'
     ||RTRIM(CHAR(REPEAT))
     ||'列的: '
     ||RTRIM(CHAR(COUNTS)) TXT
  FROM (
        SELECT REPEAT,
               COUNT(1) COUNTS
          FROM (
                SELECT FRPT(A1, A2, A3, A4, A5, A6, A7, A8) REPEAT
                  FROM TABLE(
                             VALUES (1, 1, 2, 2, 3, 3, 4, 4),
                                    (1, 1, 2, 5, 6, 3, 4, 9),
                                    (1, 1, 1, 3, 5, 7 ,2 ,6),
                                    (1, 1, 1, 3, 3, 3 ,8 ,8)
                            ) T(A1, A2, A3, A4, A5, A6, A7, A8)
               ) T
         WHERE REPEAT > 1
           AND REPEAT < 8
         GROUP BY REPEAT
       ) T
      
--测试语句二
SELECT '连续重复'
     ||RTRIM(CHAR(REPEAT))
     ||'列的: '
     ||RTRIM(CHAR(COUNTS)) TXT
  FROM (
        SELECT REPEAT,
               COUNT(1) COUNTS
          FROM (
                SELECT FRPT(A1, A2, A3, A4, A5, A6, A7, A8) REPEAT
                  FROM TABLE(
                             VALUES (11,11,11,11,22,22,33,44),
                                    (11,11,11,11,22,22,33,44),
                                    (11,11,11,11,22,22,33,44),

                                    (11,11,33,33,22,22,33,44),
                                    (11,11,33,33,22,22,33,44),
                                    (11,11,66,11,22,11,33,44),

                                    (11,11,11,66,22,11,33,44)
                            ) T(A1, A2, A3, A4, A5, A6, A7, A8)
               ) T
         WHERE REPEAT > 1
           AND REPEAT < 8
         GROUP BY REPEAT
       ) T     

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7690668/viewspace-624141/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-09-13

  • 博文量
    16
  • 访问量
    35004