oracle - Oracle子查询同时使用count和max与join
问题描述
表COMPUTER
:
表SUPPLIER
:
如何显示拥有最多计算机的建筑物位置?我一直在尝试几种方法,包括子查询、连接、最大值、计数,但所有方法都不起作用并且错误不断发生
我追求的结果是
SUPPID SNAME SADDRESS MAKE COUNT(*)
125 Apple Sdn.Bhd 18 Jalan Duta Apple 3
解决方案
例如(样本数据在第 1 - 12 行;您可能感兴趣的查询从第 13 行开始):
SQL> with
2 -- sample data
3 computer (compid, make, suppid, locid) as
4 (select 13323, 'IBM' , 124, 333 from dual union all
5 select 13324, 'Apple', 125, 444 from dual union all
6 select 13325, 'Apple', 125, 444 from dual union all
7 select 13326, 'Apple', 125, 444 from dual
8 ),
9 supplier (suppid, sname, saddress) as
10 (select 124, 'IBM Sdn.Bhd' , '15 Jalan Duta' from dual union all
11 select 125, 'Apple Sdn.Bhd', '18 Jalan Duta' from dual
12 ),
13 comp_loc as
14 -- number of computers per location; RNK = 1 shows location with most computers
15 (select locid,
16 rank() over (order by count(*) desc) rnk,
17 count(*) cnt
18 from computer
19 group by locid
20 )
21 select distinct s.suppid, s.sname, s.saddress, c.make, l.cnt
22 from supplier s join computer c on c.suppid = s.suppid
23 join comp_loc l on l.locid = c.locid
24 where l.rnk = 1;
SUPPID SNAME SADDRESS MAKE CNT
---------- ------------- ------------- ----- ----------
125 Apple Sdn.Bhd 18 Jalan Duta Apple 3
SQL>
推荐阅读
- visual-studio-code - 如何禁用 Visual Studio Code 自动保存
- sql - 在一对多关系中,是否可以在不使用计数和分组依据的情况下根据他们是否有某些孩子来查询父母?
- reactjs - 向蓝图选择组件弹出框添加元素?
- javascript - Javascript 不会将数组值放在 CSS 语法中
- javascript - 反应下拉不显示选项
- java - 为什么`equals`不比较字符串和字符串数组?
- javascript - 使用 Jquery 动态删除脚本标签时的问题
- javascript - 在 HTML 中使用计时器平滑滚动
- javascript - 如何从 json.stringify 中读取特定值:离子
- mysql - 使用 MySQL 对象数组查询 JSON 列