十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你这就是分组后取纪录最大的一行嘛
十多年的莱州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整莱州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“莱州网站设计”,“莱州网站推广”以来,每个客户项目都认真落实执行。
①可以用开窗函数row_number over(partition by 系统号 order by 峰值 desc),然后取排名第一的
②可以用子查询
第一种方式:select distinct x, y from t;第二种方式:select x,y from t group by x,y推荐第二种方式
进行筛选的基本运算符号:
--查询月薪高于2000的员工的姓名和其月薪
--查询员工SMITH的员工信息
--关键字,表名,列名:大小写是不敏感(随意写)
--数据:大小写是敏感(不能随意写)
--查询不在20号部门工作的员工信息
--查询在20号部门工作并且月薪高于2000的员工信息
--查询职位是MANAGER或者月薪不低于3000的员工信息
--查询在10号部门工作月薪低于2000并且职位不是CLERK的员工信息
--查询在10号部门工作或(20号部门工作并且月薪不低于1500)的员工信息
--and的优先级要高于or 如果两者混合使用,需要注意优先级的问题
--加括号解决优先级问题
--SQL注入:利用了and的优先级高于or完成无密码进行登录
--SQL片段:通过在密码框中输入下方的SQL片段,更改了原有SQL语句的逻辑 ' or lname = 'admin --or前的逻辑:账号随意,密码为空 (登录失败) --or后的逻辑:用户名是admin的账号 (调取了admin的信息)
--1.查询10号部门职位是MANAGER的员工信息
--2.查询月薪低于2000或月薪高于3000的员工信息
--3.查询员工编号是7902的员工的所有下属的员工信息
--4.查询职位是CLERK或SALESMAN,并且月薪不低于1000的员工信息
--5.查询月收入不低于2500的员工信息
--6.查询30号部门年收入低于10000的员工信息
--7.查询员工SCOTT的月薪,奖金和月收入
--8.查询在1982年之前入职的员工信息(选做)
--相当于 = A and = B
--查询月薪在1000-2000区间的员工信息
--82年入职的员工
--like '特定字符'
-- 特定字符:由转义字符和搜索文本组成
-- 转义字符: %: 0-n个字符(任意长度的任意字符)
-- : 1个字符(1个长度的任意字符)
-- 比如 姓李 特定字符的写法 '李%'
-- 第二个字符是哈 特定字符的写法 ' 哈%'
--查询员工名字首字母是S的员工
--查询名字中倒数第2个字符是T的员工
--查询名字中包含字母T的员工
--查询名字中包含两个字母T的员工
--查询有两个连续的T
--查询名字中有%字符的员工
--声明标识字符
--相当于 = A or = B or = C...
--查询在10号部门或20号部门工作的员工
--查询在10号部门工作或月薪高于1200的员工
-- = null 无法筛选任何数据
-- is null 筛选null值
-- not between A and B 不在A与B区间内
-- not like '%A%' 名字里面没有A
-- not in(A,B,C) 不是A,B,C其中之一
-- is not null 不为null
--查询月薪不在1000-2000区间内并且名字中不包含字母T的员工信息
--order by 列名 或 列别名 或 表达式 或 列序号
--ASC 升序 由小到大
--DESC 降序 由大到小
--不写 默认是升序
--## 书写顺序:select...from...where...order by...
--## 执行顺序:from...where...select...order by...
--查询所有员工的信息,按照月薪的升序排序
--再按照月薪的降序排序
--利用表达式排序
--利用列别名进行排序
--利用列序号进行排序(第4列)
--排序的原则:
--1.数值按照数值的大小
--2.文本按照字典顺序
--3.日期按照未来的大
--#####order by 可以修饰多个列
-- ## order by A, B 先A的升序排序,如果A相同,再按B的升序排序
-- ## order by A desc, B desc 先A的降序排序,如果A相同,再按B的降序排序
--查询月薪高于1000的员工,按照部门的升序排序,再按照入职日期降序排序
--推荐在order by中使用列名或列别名
--1.查询名字中包含字母T,并且月薪在1500-3000之间的员工姓名和月薪
--2.查询公司的BOSS信息(mgr值为null的人)
--3.查询员工姓名,月薪,奖金,年收入,按照年收入降序进行排序显示
--4.查询职位中包含MAN并且有奖金收入(不是null不是0)的员工信息
--5.查询在在1981年期间入职的员工信息,并按照月薪降序排序
--6.查询员工信息,并按照职位升序,部门升序进行排序显示
--7.查询不在10号或20号部门工作,月薪低于1500的员工信息
--8.查询所有的职位名称,去掉重复后按照名称的升序排序显示
--9.查询员工SCOTT和ADAMS的员工信息
--10.查询年收入高于45000的员工信息,并按照年收入降序排序显示
那只能是借助rownum来实现了. oracle中在加了rownum之后可进行排序。
使用rownum,一般是筛选部分行数为结果,所以若再排序,只是对部分结果进行排序,可能不是所需要的结果。
若在oracle先排序再rownum,则使用SQL嵌套可以实现,比如
select * from (select * from test order by a) where rownum2;
虽然此sql可实现,排序后查询前10条的数据,根据实际需要修改即可。
oracle筛选用where子句。
如emp表中有如下内容:
现要筛选出deptno为10的数据,可用如下语句:
select * from emp where deptno=10;
select decode(a,2,2,'')
from
tb
where (a=2 and b='Y') or (a=1 and instr(b,'N')0)