【问题标题】:Oracle SQL Query - Finding the count of tuples that have the same attribute value within same tableOracle SQL 查询 - 查找同一表中具有相同属性值的元组的计数
【发布时间】:2019-09-27 18:06:27
【问题描述】:

感谢各位的回复,我没有意识到在 sql 中可以使用更多其他功能。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    不使用join和group by,这就是我想出的,使用row_number()通过PURCHASE.RECEIPTNO生成唯一行。

    select count(distinct receipt_no) from (
    select row_number() over (partition by SUBSTR(RECEIPTNO, 0, 3) order by message) rn
         , SUBSTR(RECEIPTNO, 0, 3)  as receipt_no
    from PURCHASE)
    where rn >= 10
    

    【讨论】:

      【解决方案2】:

      通过使用以下查询,您可以减少 SUSTR 函数调用的次数。

      select * from (
        with A as
        (select SUBSTR(RECEIPTNO, 0, 3) aa from purchase)
         select count(*) cc from A
        group by aa
        )
      where cc > 10
      

      【讨论】:

        【解决方案3】:

        您可以使用count()解析函数如下:

        SELECT
            SUM(COND_MET) AS RESULT
        FROM
            (
                SELECT
                    CASE
                        WHEN COUNT(1) OVER(
                            PARTITION BY SUBSTR(RECEIPTNO, 0, 3)
                        ) > 10 THEN 1
                    END AS COND_MET
                FROM
                    PURCHASE
            );
        

        干杯!!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-09
          • 1970-01-01
          • 2017-04-23
          • 2016-07-06
          • 2012-10-23
          • 2016-05-21
          • 2013-06-27
          • 2014-05-05
          相关资源
          最近更新 更多