sql分组

SQL Server数据库的T-SQL高级查询

Deadly 提交于 2020-01-05 00:21:51
一、查询使用的函数 请自行创建数据库和表,表中插入数据,我的样例如下: create database accp; <!--创建accp数据库--> use accp; <!--切换到accp数据库--> create table test ( <!--创建test表--> 编号 int identity(1,1) not null, 姓名 nvarchar(4) not null, 证件号码 varchar(18) primary key, 职务 nvarchar(6) null, 入职时间 datetime null, 出生日期 datetime null, 基本工资 money null check (基本工资 >=0 and 基本工资 <= 10000), ); select * from test; <!--查看test表结构--> alter table test add 备注 nvarchar(50); <!--添加一列备注列--> <!--表中插入数据 --> insert into test values ('王三','111111111111111111','初级运维','2011/3/8','1980/12/3',7500,'老员工'); insert into test values ('杜五','222222222222222222','中级运维',

基本查询语句和方法,连表,子查询

吃可爱长大的小学妹 提交于 2020-01-01 14:30:18
基本查询语句及方法   from, where, group by, having, distinct, order by, limit 连表   inner join, left join, right join, union 书写顺序   select id,name from emp where id > 3 and id < 6; 执行顺序   from # 确定到底是哪张表 where # 根据过来条件 筛选数据 select # 拿出筛选出来的数据中的某些字段   select * from emp\G; 当表字段特别多的时候 结果的排版可能会出现混乱的现象 你可以在查询语句加\G来规范查询结果   # 1.查询id大于等于3小于等于6的数据   select * from emp where id >= 3 and id <= 6;   select * from emp where id between 3 and 6;   上述语句完全等价 # 2.查询薪资是20000或者18000或者17000的数据   select id,name from emp where salary = 20000 or salary = 18000 or salary = 17000;   select id,name from emp where salary in (20000

mysql基本查询语句及方法

心不动则不痛 提交于 2020-01-01 14:29:48
一、语法执行顺序   书写顺序     select id,name from emp where id > 3 and id < 6;   执行顺序     from # 确定到底是哪站表     where # 根据过来条件 筛选数据     select # 拿出筛选出来的数据中的某些字段     select * from emp\G; 当表字段特别多的时候,打印结果的排版可能会出现混乱的现象,这时在查询语句加\G来规范查询结果。 二、常用查询语句 1.where约束条件   1.查询id大于等于3小于等于6的数据     select * from emp where id >= 3 and id <= 6;     select * from emp where id between 3 and 6;(两句所表达的结果完全一致)   2.查询薪资是20000或者18000或者17000的数据     select id,name from emp where salary = 20000 or salary = 18000 or salary = 17000;     select id,name from emp where salary in (20000,18000,17000);   3.查询员工姓名中包含o字母的员工姓名和薪资   模糊匹配 like   %

常用SQL查询语句

时光总嘲笑我的痴心妄想 提交于 2020-01-01 02:29:12
一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项 4. 查询指定行 SQL>SELECT * FROM emp WHERE job='CLERK'; 5. 使用算术表达式 SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序) SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82'; 6. 使用like操作符(%,_) %表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。 SQL>SELECT * FROM emp WHERE ename like 'S

常用SQL查询语句

好久不见. 提交于 2020-01-01 02:27:44
常用SQL查询语句 一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项 4. 查询指定行 SQL>SELECT * FROM emp WHERE job='CLERK'; 5. 使用算术表达式(nvl(comm,0) 如果comm为空就变成0) SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序) SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82'; 6. 使用like操作符(%,_) %表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。 SQL

常用SQL查询语句

房东的猫 提交于 2020-01-01 02:26:15
一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项 4. 查询指定行 SQL>SELECT * FROM emp WHERE job='CLERK'; 5. 使用算术表达式 SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序) SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82'; 6. 使用like操作符(%,_) %表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。 SQL>SELECT * FROM emp WHERE ename like 'S

oracle中的having子句

﹥>﹥吖頭↗ 提交于 2019-12-28 04:12:54
oracle中的having子句 having子句 having子句和group by一起使用,紧跟在group by的后边,having子句可以使用结果集中的列,也可以使用聚合函数(max、min、count、sum、svg)。having的作用是对分组后的结果进行过滤。这里在提一下where,where是对每一行进行过滤的,查询出符合where条件的每一行。having是对查询出结果集分组后的结果进行过滤。 事例 我们现在有个mk_script_info渠道表,CHN_TYPE为渠道类型,如下图。 我们先统计一下渠道的数量。 现在我们的的需求是查询出渠道数量大于500的渠道。sql如下。我们可以看到having的用法,对分组统计后的chn_type数量进行了大于500的条件过滤。 参考文章: http://blog.sina.com.cn/s/blog_53e731b70101lamz.html http://www.cnblogs.com/jameshappy/archive/2012/05/23/2515034.html 来源: CSDN 作者: c&0xff00 链接: https://blog.csdn.net/weixin_37968613/article/details/103734785

sql中的 where 、group by 和 having 用法解析

别说谁变了你拦得住时间么 提交于 2019-12-27 21:27:01
--sql中的 where 、group by 和 having 用法解析 --如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术 select DepartmentID as '部门名称',COUNT(*) as '个数' from BasicDepartment group by DepartmentID --这个就是使用了group by +字段 进行了分组,其中我们就可以理解为我们按照了部门的名称ID --DepartmentID将数据集进行了分组;然后再进行各个组的统计数据分别有多少; --如果不用count(*) 而用类似下面的语法 select DepartmentID,DepartmentName from BasicDepartment group by DepartmentID --将会出现错误 --选择列表中的列 'BasicDepartment.DepartmentName' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。 这就是我们需要注意的一点,如果在返回集字段中,这些字段 要么就要包含在Group By语句的后面,作为分组的依据; 要么就要被包含在聚合函数中,作为分组的依据; --出现的错误详解:咱们看看group by 的执行的过程,先执行select

SQL 中having 和where的区别分析

牧云@^-^@ 提交于 2019-12-27 10:07:58
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集 在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句 限制返回的结果集。groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。 在带有groupby子句的查询语句中,在select列表中指定的列要么是groupby子句中指定的列,要么包含聚组函数 复制代码 代码如下: selectmax(sal),jobempgroupbyjob; (注意max(sal),job的job并非一定要出现,但有意义) 查询语句的select和groupby,having子句是聚组函数唯一出现的地方,在where子句中不能使用聚组函数。 复制代码 代码如下: selectdeptno,sum(sal)fromempwheresal>1200groupbydeptnohavingsum(sal)>8500orderbydeptno; 当在gropuby子句中使用having子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句

SQL语句大全

丶灬走出姿态 提交于 2019-12-26 23:49:11
--登录数据库 mysql -uroot -p 解释说明: -u表示用户名, -p:密码 --显示当前时间 select now(); --登出(退出)数据库 exit/quit/ctr+d --查看所有数据库 show databases; --创建数据库 create database py40 charset=utf8; --使用数据库 use py40; --查看数据库里面的所有表 show tables; --查看当前使用的数据库 select database(); --删除数据库-慎重 drop database py40 --查看当前数据库中所有表 show tables; --创建表 create table students(id int unsigned not null primary key auto_increment,name varchar(10) not null, age tinyint default 0, height decimal(3,2), gender enum('男', '女') default '女'); --修改表-添加birthday字段 alter table students add birthday date; --修改表-修改字段类型 alter table students modify birthday