group by用法多个字段_select的用法

v2-a57fb69b72c47c17ed3233796bc76211_1440w.jpg?source=172ae18b

select的用法
--每个员工的所有信息
select * from emp;
--每个人的部门编号,姓名,薪水
select empno, ename, sal from emp;
--每个人的年薪
select ename, sal*12 from emp;
--计算2*3的值
select 2*3 from emp;
--计算2*3的值(dual)
select 2*3 from dual;
--得到当前时间
select sysdate from dual;
--可以给列起别名,比如求每个人的年薪
select ename, sal*12 annual_sal from emp;
--如果别名中有空格,需要用双引号
select ename, sal*12 "annual sal" from emp;
--如果没有内容,则为空
select ename, sal, comm from emp; /*null*/
--当空字段参与计算,则结果是null
--例如:计算每个人的全年的收入包括月薪和年终奖
select ename, sal * 12 + comm from emp;
--可以将多个字符串拼在一起。比如:求每个人的薪水,格式为smith-sal-123
select ename || ‘-‘ || sal || ‘-‘ || comm from emp;
--如果字符串中有单引号,需要用另外一个单引号转义,比如:这样一个字符串: he‘s friend
select ename || ‘he‘‘s friend‘ from emp;
--------------------------------------------------------
--distinct 关键词的用法
--求有哪些个部门
select deptno from emp;
select distinct deptno from emp;
--可以用来修饰多个字段
--求有哪些个部门和job的组合
select deptno , job from emp;
select distinct deptno , job from emp;
--------------------------------------------------------
where关键词的用法
--可以是数值类型的等值判断。比如:求10这个部门的所有员工
select * from emp where deptno = 10;
--可以是字符串类型的等值判断。比如:求叫KING的这个人的信息
select * from emp where ename = ‘KING‘;
--也可以是不等值判断。比如:求薪水小于2000的员工信息
select * from emp where sal > 2000;
--字符串也可以做不等值判断,比如:求所有ename大于‘CBA‘的员工信息。
select ename from emp where ename > ‘CBA‘;
--求部门不是10的部门
select * from emp where deptno <> 10;
--求薪水在800和1500之间的员工信息
select * from emp where sal between 800 and 1500;
--也可以写成
select * from emp where sal >= 800 and sal <= 1500;
/*这样写则不可以
--select * from emp where 800 <= sal <= 1500;
*/
--where...in..的用法。比如:求薪水是800或者1500或正2000的员工信息
select ename, empno, sal from emp where sal in (800, 1500, 2000);
--相当于写成这样
select ename, empno , sal from emp where sal = 800 or sal = 1500 or sal = 2000;
--再比如求姓名是KING,SMITH,AA的员工信息
select ename, empno , sal from emp where ename in (‘KING‘, ‘SMITH‘, ‘AA‘);
--求入职时间在20-2月-81之后的员工信息
select ename, hiredate from emp where hiredate > ‘20-2月-81‘;
--------------------------------------------------------
--and or not的用法
--求薪水大于1000或者部门在10这个部门的员工信息
select * from emp where sal > 1000 or deptno = 10;
--求薪水不是800或者不是1500或者不是3000的员工信息
select * from emp where sal <> 800 and sal <> 1500 and sal <> 3000;
--也可以这样来写
select * from emp where sal not in (800, 1500, 3000);
--------------------------------------------------------
--like的用法
--求名字中包含ALL这三个字符的员工信息
select ename from emp where ename like ‘%ALL%‘;
--求名字中的第二个字母是A的员工
select ename from emp where ename like ‘_A%‘;
--特殊字符需要转义。比如:求员工中包含特殊字符%的员工信息
select ename from emp where ename like ‘%%%‘ escape ‘‘;
--------------------------------------------------------
--null的用法
--求没有年终奖的员工
select ename from emp where comm is null;
--求有年终奖的员工
select ename from emp where comm is not null;
--------------------------------------------------------
--order by的用法
--员工信息按照姓名正序排列
select ename, sal from emp order by ename asc; --ascent
--员工信息按照倒叙排列
select ename, sal from emp order by ename desc; --descent
--也可以是多个字段组合排列。例如:员工信息按照部门正序排列,并且按照姓名倒叙排列
select ename, sal, deptno from emp order by deptno asc, ename desc;
--------------------------------------------------------
--function的用法
--把所有姓名变成小写
select lower(ename) from emp;
--把所有姓名变成大写
select upper(ename) from emp;
--求所有人名中包含‘a‘的员工信息不区分大小写
select ename from emp where lower(ename) like ‘%a%‘;
--截取子字符串,比如求Hello的一部分
select substr(‘Hello‘, 2) from dual;
--求Hello的一部分,并指明长度
select substr(‘Hello‘, 2, 3) from dual;
--求ascii码对应的字符
select chr(65) from dual;
--求字符对应的ascii码
select ascii(‘中‘) from dual;
--四舍五入
select round(23.652) from dual;
--四舍五入小数点后面多少位
select round(23.652, 1) from dual;
--四舍五入小数点前面多少位
select round(23.652, -1) from dual;
--------------------------------------------------------
--important!日期转换函数
--------------------------------------------------------
--将当前日期转换成1981-03-12 12:00:00这种形式的字符串
select to_char(sysdate, ‘YYYY-MM-DD HH24:MI:SS‘) from dual;
--将1981-03-12 12:00:00字符串转换成日期
select to_date(‘1981-03-12 12:00:00‘, ‘YYYY-MM-DD HH24:MI:SS‘) from dual;
--将每个人的薪水转换成固定格式的字符串
select to_char(sal, ‘L00,000.9999‘) from emp;
--将固定格式的字符串转换成数值
select to_number(‘$1,250.00‘, ‘$9,999.99‘) from dual;
--null当null参与计算时候,需要要nvl这个函数
select ename, sal*12+comm from emp;
select ename, sal*12+ nvl(comm, 0) from emp;
--------------------------------------------------------
--group function组函数
--求所有人的薪水的总和,平均值,最大值,最小值
select sum(sal) , avg(sal), max(sal) , min(sal) from emp;
--求总的行数
select count(*) from emp;
--求总的行树,(可以指定具体的字段)但如果字段有null值的时候需要小心使用
select count(comm) from emp;
--也可以过滤掉重复的行之后统计行数
select count(distinct deptno) from emp;
--可以指明按照哪个字段进行分组.比如;分部门统计最高薪水
select deptno, max(sal) from emp group by deptno;
--也可以按照多个字段来分组统计,比如:分部门和岗位,统计最高薪水和行数
select deptno, job , max(sal), count(*) from emp group by deptno, job;
--------------------------------------------------------
--重要:出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by 子句中。
--------------------------------------------------------
--select ename, deptno, max(sal) from emp group by deptno;
--select ename, max(sal) from emp;
--求薪水最高的员工姓名
select max(sal) from emp;
select ename, sal from emp where sal = 5000;
select ename from emp where sal = (select max(sal) from emp);
--having从句的用法
--求平均薪水是2000以上的部门
select avg(sal), deptno from emp group by deptno having avg(sal) > 2000;
--------------------------------------------------------
--总结一下select语法
select
from
where
group by
having
order by
--------------------------------------------------------
-- 执行顺序very important!
-- 首先执行where语句将原有记录过滤;
-- 第二执行group by 进行分组;
-- 第三执行having过滤分组;
-- 然后将select 中的字段值选出来;
-- 最后执行order by 进行排序;
--------------------------------------------------------
/*
按照部门分组统计,求最高薪水,平均薪水
只有薪水是1200以上的才参与统计
并且分组结果中只包括平均薪水在1500以上的部门
而且按照平均薪水倒叙排列
*/
select max(sal),avg(sal), deptno
from emp
where sal > 1200
group by deptno
having avg(sal) > 1500
order by avg(sal) desc;
--------------------------------------------------------
/*
把雇员按部门分组,
求最高薪水, 部门号,
过滤掉名字中第二个字母是‘A‘的,
要求分组后的平均薪水>1500,
按照部门编号倒序排列
*/
select deptno, max(sal)
from emp
where ename not like ‘_A%‘
group by deptno
having avg(sal) > 1500
order by deptno desc;
/* very very important! */
select ename, deptno from emp;
select deptno, dname from dept;
----员工姓名以及员工所在部门的名字同时显示出来
select ename, dname from emp , dept;
select ename, dname from emp , dept where emp.deptno = dept.deptno;
--要求每位雇员的薪水等级
select ename, sal, grade from emp, salgrade where emp.sal >= salgrade.losal and emp.sal <= salgrade.hisal;
select ename, sal, grade from emp e, salgrade s where e.sal between s.losal and s.hisal;
--求工作职位是’PRESIDENT’的雇员姓名,部门名称和薪水等级时
select ename, dname, grade
from emp e, dept d, salgrade s
where e.deptno = d.deptno and e.sal between s.losal and s.hisal
and job = ‘PRESIDENT‘;
--求每位员工的姓名,及其上级经理的姓名
select empno, ename, mgr from emp;
select e1.ename, e2.ename from emp e1, emp e2 where e1.mgr = e2.empno;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机考试打字小作文,打字练习作文(通用5篇)

打字练习作文(通用5篇)导语&#xff1a;随着计算机在人们的生活中普及&#xff0c;敲键盘打字的速度就变成了人们努力的方向。下面是小编为大家整理的打字练习作文(通用5篇)&#xff0c;欢迎阅读&#xff0c;希望大家能够喜欢。打字练习作文 篇1今天过得有些无聊&#xff0c;爸…

euclidea教程_Euclidea

Euclidea作者&#xff1a;Fegeek56次浏览2019-10-13 12:42:02分享Euclidea is a FUN & CHALLENGING Way to Create Euclidian Constructions!> 127 Levels: from very easy to really hard> 11 Tutorials> 10 Innovative Tools> "Explore" Mode and …

信息技术与计算机文化的问题,信息技术与计算机文化

第一章 信息技术与计算机文化1信息&#xff1a;是指自然界、人类活动和人类思维活动中普遍存在的一切物质和事物的属性(在计算机上以数据形式存储)2数据&#xff1a;存储在某种媒体上加以鉴别的符号资料(在计算机以二进制形式存储)3文件&#xff1a;存储在外存上的一组相关信息…

eclipse创建pojo_使用Eclipse Hibernate插件逐步为POJO域Java类和hbm自动生成代码

eclipse创建pojo概述&#xff1a; 在本教程中&#xff0c;我们将使用Eclipse Hibernate工具自动生成域对象和相应的hbm xml文件。 如果您正在处理大型或中型项目&#xff0c;并且开始时有超过5个以上的表&#xff0c;那么您可能会发现此插件是自动生成映射域对象java文件和相应…

c语言中x的n次方怎么表示_线性代数的本质及其在AI中的应用

线性代数是 AI 专家必须掌握的知识&#xff0c;这已不再是个秘密。如果不掌握应用数学这个领域&#xff0c;你永远就只能是「门外汉」。当然&#xff0c;学习线性代数道阻且长。数学&#xff0c;尤其是线性代数常与枯燥、复杂和毫无意义的事物联系起来。不过你还可以另辟蹊径。…

为什么在生产中进行调试是如此诱人?

生产调试 为什么在生产中进行调试是如此诱人&#xff1f; 在我的第一份工作中&#xff0c;我要做的任务之一是修复一个错误&#xff0c;该错误过去在非常复杂的生产系统中有时会发生。 很简单&#xff01; - 我想。 我将在开发环境中重现同样的情况&#xff0c;找到虚线&#x…

软件测试中需求分析谁去做的,软件项目在进入需求分析阶段,测试人员应该开始介入其中。 - 问答库...

问题&#xff1a;[判断题] 软件项目在进入需求分析阶段&#xff0c;测试人员应该开始介入其中。A . 正确B . 错误某男性患者&#xff0c;45岁&#xff0e;乡镇企业工人&#xff0c;因腹胀&#xff0c;尿少2周就诊。诉近年来体力下降较明显&#xff0c;易疲乏&#xff0c;时有右…

解码base64_linux C++ Base64编解码

Base64的由来目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时&#xff0c;系统之间的报文交互都需要使用Base64对明文进行转码&#xff0c;然后再进行签名或加密&#xff0c;之后再进行&#xff08;或再次Base64&#xff09;传输。那么&#xf…

java的for循环取出数据只是拿到最后一个_新兴大数据分析榆中百合

新兴大数据分析榆中百合大数据流程从流程角度上看&#xff0c;整个大数据处理可分成4个主要步骤。处理流程图分为三层(数据采集层&#xff0c;数据存储与计算处理层&#xff0c;数据可视化)&#xff1a;表2-1 系统环境系统版本Windows 10专业版(建议)LinuxCentOS 6.8 or CentO…

文件 服务器 pandas,疑难杂症-使用pandas_profiling查看EDA数据文档遇到的一些坑

最近在学习特征工程相关的东西&#xff0c;发现pandas_profiling这个包特别适合直观地能够展示数据地很多细节的地方&#xff0c;包括缺失值等相关信息。然后&#xff0c;我就开始折腾pip install pandas_profiling发现一下子把原本好好的环境(Anaconda3.5、Python3)给折腾坏了…

log4j 禁止类输出日志_log4j 2过滤spring日志遇到的问题

在项目中使用testng写单元测试&#xff0c;使用log4j输出日志&#xff0c;spring的日志也被打印出来&#xff0c;在调试的时候看到一片一片的spring日志很烦&#xff0c;总是要找自己的输出日志。这样式的~~~找了一下log4j2的日志过滤&#xff0c;很简单&#xff0c;在logger定…

c++冒泡排序代码_【开源推荐】数据结构和算法必知必会的50个代码实现

最近GitHub上发现了个非常不错的项目&#xff0c;目前star 4000&#xff0c;项目主要讲数据结构和算法&#xff0c;有多种语言 50个代码实现。实现语言有c&#xff0c;c#&#xff0c;go&#xff0c;java&#xff0c;javascript&#xff0c;object-c&#xff0c;python&#xff…

应用程序添加到服务器,在同一应用程序中的配置服务器和eureka服务器:尝试连接到localhost:8761...

我有一个spring-boot应用程序&#xff0c;可用于在开发和测试环境中设置a spring cloud config server和a eurekaserver。奇怪的是localhost:8761&#xff0c;即使我将其eureka.client.registerWithEureka设置为false&#xff0c;应用程序也总是尝试连接到。如何停用此功能&…

android 抽屉_Android Studio之路,我们来了解一下Google官方Android开发工具

记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了&#xff0c;所有重构了一下思路&#xff0c;覆写了一篇Google主推-Android开发利器——Android Studio&#xff0c;这可能是最全的AS教程&#xff01;Android Studio,自Google2013年发布以来&#xff0c;就…

karaf osgi_在OSGi中为Karaf构建Camel-CXF REST服务–组播和聚合

karaf osgi请查看我在Karaf的OSGi中构建普通CXF服务&#xff08;无Camel&#xff09;的其他文章 。 这是有关如何 创建一个CXF REST服务 使用骆驼多播&#xff08;并并行化&#xff09;传入的请求 来自两个不同服务的源数据 汇总响应并 最后将合并结果作为JSON返回给最终…

10g gtx 光纤通信测试_光纤通信系统仿真实验

1实验四光纤通信系统仿真实验【实验目的】1.掌握光纤通信系统的组成及各部分功能。2.熟悉Optisystem实验环境&#xff0c;练习使用元件库中的常用元件组建光纤通信系统。3.利用Optisystem的仿真光纤通信系统&#xff0c;并进行分析。【实验仪器】Optisystem软件计算机【实验内容…

酒店wifi代理服务器没有响应,wn10连接酒店wifi的登录界面无法弹出如何处理

通常情况下&#xff0c;我们在连接酒店wifi后都会出现登录验证界面。不过&#xff0c;最近一位windows10系统用户在连接wifi后打开网页却遇到无法显示登陆界面情况&#xff0c;该怎么办呢&#xff1f;接下来&#xff0c;就随小编一起看看wn10连接酒店wifi的登录界面无法弹出问题…

监视和管理备份系统

上一次我们建立了一个强大的备份系统 &#xff0c;现在我们将研究如何监视备份集。 我们需要验证备份集是否已正确清理&#xff08;这称为删除策略&#xff09;以及它们是否一致&#xff08;称为一致性策略&#xff09;。 备份集可以包含多个文件集。 文件集是备份文件的集合&…

linux rsa登录改密码登录_linux服务器secureCRT RSA登录配置

为了保证生产服务器的安全&#xff0c;我们会做一些安全的登录验证措施&#xff01;不允许使用root账号直接登录服务器&#xff01;下面是通过secureCRT 设置RSA登录配置。1、RSA公钥配置方法(1)打开secureCRT选择一个连接然后点属性再如图所示(2)一直点下去 点击下一步要选RS…

python词云安装什么库_python词云安装什么库

python词云需要安装wordcloud库。 安装方法&#xff1a; 在cmd使用pip install wordcloud命令即可安装。 wordcloud库把词云当作一个WordCloud对象&#xff1a;wordcloud.WordCloud()代表一个文本对应的词云。 可以根据文本中词语出现的频率等参数绘制词云。 示例&#xff1a;f…