繁体   English   中英

关于分组依据的Oracle SQL查询

[英]Oracle SQL query regarding group by

我有2张桌子,文章和看守者,其以下栏目和结构

SQL> desc caretaker;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 CID                                       NOT NULL NUMBER(5)
 CNAME                                              VARCHAR2(15)
 ADDRESS                                            VARCHAR2(20)
 SALARY                                             NUMBER(10,2)

SQL> desc article;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ART_NO                                    NOT NULL NUMBER(5)
 ART_TITLE                                          VARCHAR2(15)
 TYPE                                               VARCHAR2(15)
 A_DATE                                             DATE
 CID                                                NUMBER(5)
 MUSEUM_ID                                          NUMBER(5)

我需要执行2个查询,

1)查找薪水超过20000且至少照顾2篇文章的人所关心的文章的详细信息

2)显示看护人的详细信息,以照顾最多的物品。

对于第一个查询,我已经做到了

select a.art_no,a.art_title,a.type,a.a_date from article a,caretaker c 
where a.cid = c.cid and c.salary > 20000;

现在我对如何提取由至少2篇文章照顾者关心的文章感到困惑!

2)对于第二个查询,

select c.cid,c.cname,c.address,c.salary from caretaker c,article a 
where c.cid=a.cid 
    and count( select a.cid from article a group by a.cid ) = MAX(a.cid)?????

很困惑,请纠正我,谢谢(我不应该加入命令)

对于第一个查询:

select a.art_no,a.art_title,a.type,a.a_date 
from article a,caretaker c
where a.cid = c.cid and c.salary > 20000
and c.cid in (select cid from article group by cid having count(cid) > 1)

SQL小提琴: http ://sqlfiddle.com/#!4 / bef24 / 16

对于第二个查询:

select cname, a.art_no,a.art_title,a.type,a.a_date 
from article a,caretaker c
where a.cid = c.cid and c.cid = (select cid 
                                 from(select cid, count(cid)
                                      from article
                                      group by cid
                                      having count(cid) = (select max(count(cid)) 
                                                     from article group by cid)));

SQL小提琴: http ://sqlfiddle.com/#!4 / bef24 / 18

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM