首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询简化Oracle Northwind

查询简化Oracle Northwind
EN

Stack Overflow用户
提问于 2016-04-06 18:37:25
回答 4查看 165关注 0票数 2

任务:

找出最大客户所属的国家。

查询

代码语言:javascript
复制
SELECT country,
       count(*)
FROM customers
GROUP BY country
HAVING count(*) =
  (SELECT max(max_sal)
   FROM
     (SELECT count(*) max_sal
      FROM customers
      GROUP BY country)) ;

结果

结果是正确的,但我认为编写查询是困难的。

问题:是否有任何简单的方法来重写这个查询。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-04-06 19:30:04

我可能漏掉了什么东西,但可以这么简单:

代码语言:javascript
复制
SELECT *
  FROM (  SELECT country, COUNT (*) max_sal
            FROM customers
        GROUP BY country
        ORDER BY COUNT (*) DESC)
 WHERE ROWNUM <= 1;
票数 2
EN

Stack Overflow用户

发布于 2016-04-06 19:19:23

您可以使用WITH子句:

代码语言:javascript
复制
WITH
  c AS ( 
    SELECT country, Count(1) n
    FROM customers
    GROUP BY country)
SELECT country, n 
FROM c
WHERE n = (SELECT Max(n) FROM c)
票数 1
EN

Stack Overflow用户

发布于 2016-04-06 19:49:42

U可以在()上使用解析函数,得到最大值(avg,min等)的结果。在每一行结果中,然后在哪里比较计数(1)和最大(计数(1))

下面是一个例子:

代码语言:javascript
复制
SELECT country, cnt, max_cnt
  FROM (SELECT country, COUNT(1) AS cnt, MAX(COUNT(1)) over() max_cnt
           FROM customers
          GROUP BY country)
 WHERE cnt = max_cnt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36459652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档