【问题标题】:How to use MAX() and COUNT() in Oracle SQL?如何在 Oracle SQL 中使用 MAX() 和 COUNT()?
【发布时间】:2017-03-30 15:00:53
【问题描述】:

假设我有下表:

交易(id,类型)

id - 客户 ID(整数 1...n)
type - 他们是什么 买了(比如“苹果”)

请注意,每一行都是指只购买给定类型的一个。

如何选择购买给定类型(如苹果)最多的客户的 ID?

我尝试 COUNT() 每个 ID 的 type = apple 的行,但我不能在该查询中使用 MAX() 来仅选择第一个 ID。

谢谢

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    您可以首先进行查询,计算每个客户购买'apple' 的次数,使用:

    SELECT id,COUNT(*) AS total
    FROM transactions
    WHERE type = 'apple'
    GROUP BY id
    

    现在我们只需要在DESC结束顺序中ORDER BY那个total,并返回first row with FETCH FIRST n ROWS ONLY,比如:

    SELECT id,COUNT(*) AS total
    FROM transactions
    WHERE type = 'apple'
    GROUP BY id
    ORDER BY total DESC
    FETCH FIRST 1 ROWS ONLY

    【讨论】:

      【解决方案2】:

      这是 SQL 101,你应该阅读group by 子句:

      select id,
          count(*) as count_of_apples
      from transactions
      where type = 'apple'
      group by id
      order by count(*) desc
      

      【讨论】:

        【解决方案3】:

        当您特别要求 Oracle 时:STATS_MODE 为您提供最常出现的价值。

        select stats_mode(id)
        from transactions
        where type = 'apple';
        

        【讨论】:

          猜你喜欢
          • 2014-05-26
          • 1970-01-01
          • 2016-12-02
          • 1970-01-01
          • 2016-09-27
          • 1970-01-01
          • 2018-05-09
          • 2022-01-13
          • 1970-01-01
          相关资源
          最近更新 更多