【问题标题】:Selecting distinct values within a a group在组中选择不同的值
【发布时间】:2020-12-13 20:46:14
【问题描述】:

我想在由另一个变量定义的组中选择一个变量的不同值。最简单的方法是什么? 我的第一个想法是将 group by 和 distinct 结合起来,但它不起作用。我试过类似的东西:

select distinct col2, col1 from myTable
group by col1

我在这里看过这个,但似乎无法解决我的问题 Using DISTINCT along with GROUP BY in SQL Server_

表格示例

【问题讨论】:

  • 我正在使用 Toad 并使用 Oracle 数据库
  • 该链接适用于真正高级的 GROUP BY 技巧。您每 5 年左右做的事情。
  • GROUP BY 旨在与集合函数一起使用,如 MAX()、SUM() 等。

标签: sql oracle distinct toad distinct-values


【解决方案1】:

不需要分组,只需使用 distinct

select distinct col2, col1 from myTable

【讨论】:

    【解决方案2】:

    如果您的要求是在 col1 和 COL2 中选择不同的组合,则无需按使用进行分组

    SELECT DISTINCT COL1, COL2 FROM TABLE1;
    

    但是,如果您想自动分组,那么每个组会自动显示一条记录,那么您必须使用其中一列的聚合函数,即

    SELECT COL1, COUNT(COL2)
    FROM TABLE1 GROUP BY COL1;
    

    【讨论】:

      【解决方案3】:
      create table t as
      with inputs(val, id) as
      (
          select 'A', 1 from dual union all
          select 'A', 1 from dual union all
          select 'A', 2 from dual union all
          select 'B', 1 from dual union all
          select 'B', 2 from dual union all
          select 'C', 3 from dual 
      )
      select * from inputs;
      

      上面创建了你的表,下面是解决方案(12c 及更高版本):

      select * from t
      match_recognize
      (
          partition by val
          order by id
          all rows per match 
          pattern ( a {- b* -} )
          define b as val = a.val and id = a.id
      );
      

      输出:

      问候, 拉纳加尔

      【讨论】:

      • 谢谢。我需要阅读 match_recognize 和 partition by。通过查看代码无法弄清楚发生了什么,但它对我有用!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 2018-07-24
      • 2013-08-05
      • 2020-09-30
      • 1970-01-01
      • 2013-10-13
      相关资源
      最近更新 更多