SQL 部分函数的使用,子查询,group by,虚拟字段,case……

--1/显示面积小于仓库平局面积的仓库信息:
SELECT 面积 FROM 仓库 WHERE 面积<(SELECT AVG(面积) FROM 仓库);


--2/统计性别为女,工资大于1500的职工人数:
SELECT COUNT(*) FROM 职工 WHERE sex='女' AND 工资>1500;

--3/显示仓库表中有多少个仓库号:
SELECT COUNT(仓库号) FROM 仓库;

--4/显示不重复仓库号的个数:  ORACLE中的count()函数只能用于number数据类型;
SELECT COUNT(DISTINCT(仓库号)) FROM 仓库;

--5/显示使用员工的工资总和;
SELECT SUM(工资) FROM 职工;

--6/显示w1仓库号的工资总和;
SELECT SUM(工资) FROM 职工 WHERE 仓库号='w1';

--7/显示上海地区的工资总和;
  ---先在仓库表中查询出属于上海地区的仓库号;
SELECT SUM(工资) FROM 职工 WHERE 仓库号 IN (SELECT 仓库号 FROM 仓库 WHERE 城市='上海');

--8/显示w1仓库中工资大于1500的职工的平均工资;先求出符合条件的工资总和、职工人数,再求值;
SELECT SUM(工资)/COUNT(*) FROM 仓库 WHERE 仓库号='w1' AND 工资>1500;

--9/显示工资大于平均工资的职工的总人数、工资总和;
SELECT COUNT(*),SUM(工资) FROM 职工 WHERE 工资>(SELECT SUM(工资)/COUNT(*) FROM 职工);

--10、显示评语信息,如果最大工资与最小工资之差超过200,则评语为“工资差别大”,否则为“工资差别小”;
SELECT MAX(工资)-MIN(工资) AS 工资差,工资评语=
  CASE 
    WHEN MAX(工资)-MIN(工资)>200 THEN "工资差别大"
    ELSE "工资差别小"
  END
FROM 职工 ;

--11/显示工资大于仓库号为W1中最大工资的职工信息;
SELECT * FROM 职工 WHERE 工资>(SELECT  MAX(工资) FROM 职工 WHERE 仓库号='W1');

--12/显示除了工资最高、最低的职工的所有信息;
SELECT * FROM 职工 WHERE 工资 NOT IN ((SELECT MAX(工资) FROM 职工),(SELECT MIN(工资) FROM 职工));

--13、添加平均工资虚拟字段:  每一个记录后面都添加一个值相同的字段;
SELECT *,AVG(工资) AS 平均工资 FROM 职工;

--14、显示职工工资与其对应的仓库的平均工资之差:
  --先按仓库分组,并求出各组的平均值,以此结果为一个表,命名为aaa;
  --以表aaa和表fruits(别名为ff)结合查询,用仓库号关联;
select ff.*,aaa.平均工资,ff.工资-aaa.平均工资 
from 职工 as ff,(select 仓库号,avg(工资) as 平均工资 from 职工 group by 仓库号) as aaa 
where ff.仓库号=aaa.仓库号


--15/显示面积最大和面积最小的职工信息;
select * from 职工 
where 仓库号 in (select 仓库号 from 仓库 where 面积 in ((select max(面积) from 仓库),(select min(面积) from 仓库)))

书籍上的学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值