sql笔试题
如圖,在微信群中遇到一個人求助,閑來無事,就試著看了下,居然發現自己不是很會。于是記錄下來了。
首先我按照圖片中的4個表,在oracle數據庫中建了4張對應的表
第一題:
查詢銷售量最高產品的前兩名:
我的思路:首先根據產品分組,然后求得每一組的總和,最后按照總和從大到小排序。然后將得到的結果作為一張子表 查詢子表中的前兩行
sql如下:
select a.pnofrom (select sum(volume) totalnumber, pnofrom cdm_dealgroup by pnoorder by totalnumber desc) awhere rownum < 3;得到的結果如圖:
第二題:
--查詢每種產品銷量最高的銷售人員
我的思路:
首先根據產品分組,得到每組中的最大值,然后根據最大值去找銷售人員的id
select sname? from cdm_salas
?where sno in (select sno
? ? ? ? ? ? ? ? ?from cdm_deal
? ? ? ? ? ? ? ? where volume in (select volume
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from (select max(volume) volume, pno
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?from cdm_deal
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? group by pno)))
第三題:
查詢產品編號為2且銷售量超過100的銷售人員姓名以及所在公司
思路:根據條件查詢出銷售人員編號然后關聯代理商表,展示查詢結果
第四題:
我的思路:三個表關聯,然后分組查詢
問題五:
-- 查詢每個產品有多少個銷售人員在銷售
select pno,count(*) from cdm_deal group by pno;
問題6:
-- 查詢名稱包含BBB的代理商中的所有銷售人員
select * from cdm_salas cs where? cs.ano in(
select ca.ano from cdm_agent ca where ca.aname like'%BBB%');
問題7:
-- 查詢總銷售量最差的產品
select *
? from cdm_production
?where pno in
? ? ? ?(select aa.pno
? ? ? ? ? from (select pno, sum(volume) total from cdm_deal group by pno) aa
? ? ? ? ?where rownum < 2)
問題8:
-- 查詢2017年生產的產品的總銷量
select sum(volume) from cdm_deal where pno in (
select pno from cdm_production where pdate >= TO_DATE('2017/1/1', 'YYYY-MM-DD'))
附錄(表的創建以及插入的數據):
create table CDM_AGENT (ano? ?VARCHAR2(6),aname VARCHAR2(8) )create table CDM_DEAL (sno? ? VARCHAR2(6),pno? ? VARCHAR2(6),volume VARCHAR2(6) )create table CDM_PRODUCTION (pno? ?VARCHAR2(6),pname VARCHAR2(6),pdate DATE )create table CDM_SALAS (sno? ?VARCHAR2(6),sname VARCHAR2(6),ano? ?VARCHAR2(6) )insert into CDM_AGENT (ano, aname) values ('1', 'AAA公司'); insert into CDM_AGENT (ano, aname) values ('2', 'BBB公司'); insert into CDM_AGENT (ano, aname) values ('3', 'CCC公司'); commit; prompt 3 records loaded prompt Loading CDM_DEAL... insert into CDM_DEAL (sno, pno, volume) values ('1', '1', '21'); insert into CDM_DEAL (sno, pno, volume) values ('1', '2', '56'); insert into CDM_DEAL (sno, pno, volume) values ('1', '3', '33'); insert into CDM_DEAL (sno, pno, volume) values ('2', '2', '120'); insert into CDM_DEAL (sno, pno, volume) values ('2', '1', '32'); insert into CDM_DEAL (sno, pno, volume) values ('2', '3', '26'); insert into CDM_DEAL (sno, pno, volume) values ('3', '1', '73'); insert into CDM_DEAL (sno, pno, volume) values ('3', '3', '45'); insert into CDM_DEAL (sno, pno, volume) values ('4', '2', '111'); insert into CDM_DEAL (sno, pno, volume) values ('4', '3', '84'); insert into CDM_DEAL (sno, pno, volume) values ('5', '3', '52'); insert into CDM_DEAL (sno, pno, volume) values ('5', '1', '38'); insert into CDM_DEAL (sno, pno, volume) values ('5', '2', '91'); insert into CDM_DEAL (sno, pno, volume) values ('6', '2', '36'); insert into CDM_DEAL (sno, pno, volume) values ('6', '3', '48'); insert into CDM_DEAL (sno, pno, volume) values ('6', '1', '15'); commit;insert into CDM_PRODUCTION (pno, pname, pdate) values ('1', '產品A', to_date('06-07-2015', 'dd-mm-yyyy')); insert into CDM_PRODUCTION (pno, pname, pdate) values ('2', '產品B', to_date('06-07-2016', 'dd-mm-yyyy')); insert into CDM_PRODUCTION (pno, pname, pdate) values ('3', '產品C', to_date('06-07-2017', 'dd-mm-yyyy')); commit;insert into CDM_SALAS (sno, sname, ano) values ('1', '小趙', '2'); insert into CDM_SALAS (sno, sname, ano) values ('2', '小錢', '2'); insert into CDM_SALAS (sno, sname, ano) values ('3', '小孫', '3'); insert into CDM_SALAS (sno, sname, ano) values ('4', '小李', '1'); insert into CDM_SALAS (sno, sname, ano) values ('5', '小石', '3'); insert into CDM_SALAS (sno, sname, ano) values ('6', '小劉', '1'); commit;總結
- 上一篇: ABB 机器人 IsStopMove
- 下一篇: 简单消息协议