【问题标题】:Oracle Sql - retrieve distinct data from a listagg [duplicate]Oracle Sql - 从列表中检索不同的数据[重复]
【发布时间】:2018-06-11 06:49:53
【问题描述】:

使用此命令,我可以检索按 department_id 分组的所有不同 manager_id 的计数

select department_id, count( distinct manager_id) 
from employees
group by department_id

如果我想查看这些经理的列表,我可以使用它,但问题是它们是重复的而不是不同的

select 
    department_id,
    listagg(manager_id, ' | ') within group(order by manager_id)
from  
    employees
group by 
    department_id;

这会输出一长串重复的manager_id

单行示例:

100 | 100 | 100 | 100 | 100 | 120 | 120 | 120 | 120 | 120 | 120 | 120 | 120 | 121 | 121 | 121 | 121 | 121 | 121 | 121 | 121 | 122 | 122 | 122 | 122 | 122 | 122 | 122 | 122 | 123 | 123 | 123 | 123 | 123 | 123 | 123 | 123 | 124 | 124 | 124 | 124 | 124 | 124 | 124 | 124

我希望能够拥有一个唯一的 manager_id 列表,而不是像上面那样重复。我该怎么做?

【问题讨论】:

    标签: sql oracle11g


    【解决方案1】:

    您可以使用子查询来删除重复项:

    select department_id, count(*),
           listagg(manager_id, ' | ') within group (order by manager_id)
    from (select distinct department_id, manager_id
          from employees
         ) e
    group by department_id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 2013-05-31
      • 2017-07-09
      • 1970-01-01
      • 2012-01-17
      相关资源
      最近更新 更多