【问题标题】:How to return the row with the largest row count?如何返回具有最大行数的行?
【发布时间】:2011-11-07 14:21:48
【问题描述】:

My SQL 返回用户 ID 及其角色的列表,重点是将所有角色(组)连接到一行。目前,它返回所有内容,但我只需要为每个用户返回一个条目,基本上是每个用户的条目,该用户具有最大的 rn(行号)。

SELECT 
  IT_ID, 
  SUBSTR (SYS_CONNECT_BY_PATH (grp , ','), 2) GROUPS
FROM (
  SELECT 
    U.IT_ID, 
    LAST_NAME, 
    BFIRST_NAME, 
    GRP, 
    ROW_NUMBER() OVER (partition by u.it_id ORDER BY U.IT_ID) rn, 
    COUNT(*) OVER() cnt
FROM ECG_IT_USERS U
JOIN SECUREGROUPS G ON U.IT_ID = G.IT_ID)
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1 and it_id = prior it_id
Group by it_id

返回:

IT_ID   GROUPS
afz23   ADMIN
afz23   ADMIN, QA
klf44   USER
klf44   USER, BUSINESS

我要回去

IT_ID   GROUPS
afz23   ADMIN, QA
klf44   USER, BUSINESS

【问题讨论】:

    标签: sql oracle oracle10g relational-database greatest-n-per-group


    【解决方案1】:

    这是一个 问题。这里有关于该主题的非常全面的答案:SQL Select only rows with Max Value on a Column

    由于时间有限,我无法处理您的问题。不是给你鱼,而是教你如何钓鱼。

    【讨论】:

      【解决方案2】:

      添加另一个分析函数,计算每个IT_ID 分区上的最大行数。然后选择 rn = max_rn 所在的行。

      【讨论】:

        【解决方案3】:
        select it_id, groups
        from 
        (
            select 
              it_id
              , groups
              , row_number () over (partition by id_id order by length(groups) desc ) rn
            from 
              (
                  SELECT 
                    IT_ID, 
                    SUBSTR (SYS_CONNECT_BY_PATH (grp , ','), 2) GROUPS
                  FROM (
                    SELECT 
                      U.IT_ID, 
                      LAST_NAME, 
                      BFIRST_NAME, 
                      GRP, 
                      ROW_NUMBER() OVER (partition by u.it_id ORDER BY U.IT_ID) rn, 
                      COUNT(*) OVER() cnt
                  FROM ECG_IT_USERS U
                  JOIN SECUREGROUPS G ON U.IT_ID = G.IT_ID)
                  START WITH rn = 1
                  CONNECT BY rn = PRIOR rn + 1 and it_id = prior it_id
                  Group by it_id
              )
         )
        where rn = 1
        ;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-30
          • 2018-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-01
          • 1970-01-01
          相关资源
          最近更新 更多