关闭

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

标签: 函数sqlavgselect
670人阅读 评论(0) 收藏 举报
分类:
--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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:97733次
    • 积分:2394
    • 等级:
    • 排名:第15562名
    • 原创:142篇
    • 转载:44篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论