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

原创 2016年06月01日 23:26:46
--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 仓库)))

书籍上的学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle pl/sql中的group by子句不能使用别名,应该这样写。

下面的语句执行的话会报错:ORA-00904: "CALLT": 标示符无效 select case when ta.call_time = 0 then 0 when ta.call_tim...
  • JCrazyUltimate
  • JCrazyUltimate
  • 2015年07月06日 19:58
  • 3975

sql GROUP BY子句使用实例

GROUP BY子句 GROUP BY子句可以将表的行划分为不同的组。分别总结每个组,这样就可以控制想要看见的详细信息的级别。 语法: [ GROUP BY [ ALL ] group_by_e...
  • GoodShot
  • GoodShot
  • 2015年01月02日 16:51
  • 2910

原来order by 中也可以使用子查询

很久没写过博客了,有点惭愧,主要是因为人懒,有时候觉得自己水平也有限,写不出好东西来。            干开发很多年,今天突然知道点小技巧,虽然有点汗......但是还是决定写出来记录一下,对自...
  • kongxiangli
  • kongxiangli
  • 2013年10月12日 15:29
  • 8609

笔记:Oracle SQL 高级查询简介 (1) case、层次化、扩展group by

1. 集合操作 union all 、 union、 intersect 、 minus 注意:集合操作的所有查询返回的列数、列类型必须相同,但是列名可以不一样。 2、translate...
  • lihui6636
  • lihui6636
  • 2015年10月03日 18:04
  • 366

SQL经典面试题---group by 和 case when 的使用

SQL经典面试题及答案 1.一道SQL语句面试题,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负...
  • yansong_8686
  • yansong_8686
  • 2013年04月10日 14:34
  • 3769

(16)QL2:模糊查询(%,_)、常用的函数、group by、having、子查询、update 、delete、native

/* * 功能:获取没有回复的帖子 * is empty and is not empty 判断一个集合是否为空 select topic0_.id...
  • jiangshangchunjiezi
  • jiangshangchunjiezi
  • 2017年11月14日 11:17
  • 77

针对sql错误:“除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效”的原理与解决

执行sql语句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by da...
  • danielljc94118
  • danielljc94118
  • 2016年07月27日 16:49
  • 814

sql:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询

http://blog.csdn.net/a497785609/article/details/23168855 执行sql语句: select * from ( s...
  • zunguitiancheng
  • zunguitiancheng
  • 2015年07月29日 17:11
  • 761

MySQL 使用profile分析慢sql,group left join效率高于子查询

使用profile来分析慢sql有一个查询比较慢的sql语句,用了子查询,大概需要0.8秒左右,这个消耗时间比较长,严重影响了性能,所以需要进行优化。单独查询单表或者子查询记录都很快,开启profil...
  • mchdba
  • mchdba
  • 2017年01月12日 17:44
  • 1289

SQL编程实例:Access数据库,两张表的统计,count、sum聚合函数的使用,iif的使用,group by的使用

使用工具: FineReport报表设计器,Access数据库 需求描述: 有两张表,订单表和订单明细表 1、订单表结构: 2、订单明细表结构: 目的:根据这两张表做出下面...
  • starcuan
  • starcuan
  • 2014年05月03日 21:19
  • 2799
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL 部分函数的使用,子查询,group by,虚拟字段,case……
举报原因:
原因补充:

(最多只允许输入30个字)