sql分组

sql join连接 及 聚合函数

两盒软妹~` 提交于 2020-02-03 18:03:28
1 sql语句基础 sql(结构化查询语言)分为两个部分:DML,DDL DML 数据操作语言(查询和更新指令) 指令 含义 select 获取数据 update 更新数据 delete 删除数据 insert 插入数据 DDL 数据定义语言(create / alter / drop) 创建/修改/删除 database/table 创建/删除 index 2 聚合函数 聚合函数 count 配合 group by / having mysql聚合函数如:count(), max(), min(), sum()等 group by 将数据库的数据用’by’后面接的规则进行分组 having是分组(group by)后的筛选条件; where则是在分组前筛选 select activity_name, count(*) as count from draw_relation_record GROUP BY activity_name HAVING count(activity_name) > 4 select 与 group by配合使用时 在有group by操作中,select后面接的结果集字段只有两种:要么就只有group by后出现的字段,要么就是group by后出现的字段+聚合函数的组合 常用的五种聚合函数:min()求列中最小数值,max()求列中最大数值,avg(

05. 取SQL分组中的某几行数据

故事扮演 提交于 2020-02-03 09:54:10
对表中数据分组,有时只需要某列的聚合值;有时却需要返回整行数据,常用的方法有:子查询、ROW_NUMBER、APPLY,总体感觉还是ROW_NUMBER比较直观。 测试数据: if OBJECT_ID('testGroup') is not null drop table testGroup GO create table testGroup ( ID int identity primary key, UserID int, OrderID int ) GO insert testGroup select 1,10 union all select 1,20 union all select 1,30 union all select 2,100 union all select 2,200 union all select 3,1000 union all select 3,2000 union all select 3,3000 union all select 3,4000 一. 取分组中第1行(最大/最小值) 1. 取出分组中某列最大/最小值,不要求显示其他列 最常见的分组聚合,用group by 分组时,只有参加分组/聚合的列才可以被显示。 select UserID, MAX(OrderID) as MaxOrderID from testGroup group by

mySql分组排序

左心房为你撑大大i 提交于 2020-01-31 02:01:40
mysql 排序学习---mysql 1、建表语句 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '姓名', `score` int(11) NOT NULL COMMENT '成绩, `classid` int(11) NOT NULL COMMENT '班级', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='学生'; 2、插入数据 insert into student(Name, Score, ClassId) values("lqh", 60, 1); insert into student(Name, Score, ClassId) values("cs", 99, 1); insert into student(Name, Score, ClassId) values("wzy", 62, 1); insert into student(Name, Score, ClassId) values("zqc", 88, 2); insert

mysql单表操作

折月煮酒 提交于 2020-01-28 21:41:21
mysql记录操作 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及。 插入数据insert 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); 语法二: INSERT INTO 表名 VALUES (值1,值2,值3…值n); 2. 指定字段插入数据 语法: INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…); 3. 插入多条记录 语法: INSERT INTO 表名 VALUES (值1,值2,值3…值n), (值1,值2,值3…值n), (值1,值2,值3…值n); 4. 插入查询结果 语法: INSERT INTO 表名(字段1,字段2,字段3…字段n) SELECT (字段1,字段2,字段3…字段n) FROM 表2 WHERE …; 更新数据update 语法: UPDATE 表名 SET 字段1=值1, 字段2=值2, WHERE CONDITION; 示例: UPDATE mysql.user SET password=password(‘123’)

Oracle Sql 胡乱记

时间秒杀一切 提交于 2020-01-26 11:20:37
/ Oracle查询优化改写 / --1、coalesce 返回多个值中,第一个不为空的值 select coalesce('', '', 's') from dual; --2、order by -----dbms_random.value 生产随机数,利用随机数对查询结果进行随机排序 select * from emp order by dbms_random.value; --指定查询结果中的一列进行排序 select * from emp order by 4; -----order by 中认为null是最大所以null会排在第一或者最后一个 -----可以利用 nulls first 或者 nulls last 对null进行排序处理 select * from emp order by comm nulls first; select * from emp order by comm nulls last; ----- 多列排序,job 降序排列,如果工作一样,按照工号升序排列 select * from emp order by job desc, empno asc; ------依次按照job,empno降序排序 select * from emp order by job, empno desc; ------将empno = 7934 的排在第一位

SQL -ORACLE分组后连接字符串

那年仲夏 提交于 2020-01-26 03:33:10
SQL -ORACLE分组后连接字符串 方法一:wmsys.wm_concat(column) 介绍:其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型。括号里面的参数是列,而且可以是多个列的集合,也就是说在括号里面可以自由地用‘||’合并字符串。如下面的例子: Select 分组字段 , wmsys . wm_concat ( 连接字符串字段 ) from 表名 group by 分组字段 wmsys.wm_concat例子 : WITH temp1 AS ( select 'a' as username , 1 as deptid from dual union all select 'b' , 1 from dual union all select 'c' , 1 from dual union all select 'd' , 2 from dual union all select 'e' , 2 from dual ) , temp2 AS ( select 1 as deptid , '部门1' as deptname from dual union all select 2 , '部门2' from dual ) select p . deptid , wm_concat ( t . username ) as

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记

跟風遠走 提交于 2020-01-25 14:43:26
一、SQL Server体系结构 1.1 数据库的物理布局 数据库在物理上由数据文件和事务日志文件组成,每个数据库必须至少有一个数据文件和一个日志文件。 (1)数据文件用于保存数据库对象数据。数据库必须至少有一个主文件组(Primary),而用户定义的文件组则是可选的。Primary文件组包括 主数据文件(.mdf),以及数据库的系统目录(catalog)。可以选择性地为Primary增加多个辅助数据文件(.ndf)。用户定义的文件组只能包含辅助数据文件。 (2)日志文件则用于保存SQL Server为了维护事务而需要的信息。虽然SQL Server可以同时写多个数据文件,但同一时刻只能以顺序方式写一个日志文件。 .mdf、.ldf和.ndf .mdf代表Master Data File,.ldf代表Log Data File,而.ndf代表Not Master Data File(非主数据文件) 1.2 架构(Schema)和对象  一个数据库包含多个架构,而每个架构又包括多个对象。可以将架构看作是各种对象的 容器 ,这些对象可以是表(table)、视图(view)、存储过程(stored procedure)等等。  此外,架构也是一个命名空间,用作对象名称的前缀。例如,架设在架构Sales中有一个Orders表,架构限定的对象名称是Sales.Orders

函数之sql语句

女生的网名这么多〃 提交于 2020-01-25 01:11:17
1 函数 1.1 函数 函数一般是在数据上执行的,它给数据的转换和处理提供了方便。只是将取出的数据进行处理,不会改变数据库中的值。 函数 根据处理的数据分为单行函数和聚合函数( 组 函数) 组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的 having 子句 单行函数对单个数值进行操作,并返回一个值。 dual 是 一个系统表。注意 用于 测试。 1.2 字符 相关 -- dual用于测试 select * from dual; -- 1.字符串连接 select concat('aa','12') from dual; select 'aa'||'12' from dual; -- 2.首字母大写 select initcap('abc') from dual; --- 把大写转化小写 select lower('ABc') from dual; select upper('abc') from dual; -- 把所有员工的姓名小写输出 select lower(e.ename),e.empno from emp e -- 3.填充字符lpad/rpad select lpad('sxt',5,'*') from dual; select rpad('sxt',5,'*') from dual; -- 4.去掉空白字符

【记录】sql分组排序编号ROW_NUMBER ()写法(数据库:sql server)

≡放荡痞女 提交于 2020-01-20 18:35:37
今天写sql有这样一个需求:按照某几个字段进行分组,在每组内按照另外一个字段进行排序,并返回每组中每条数据的排序。 经过百度,使用sql的ROW_NUMBER ()方法,写法如下: ROW_NUMBER ( ) over ( PARTITION BY 分组字段 ORDER BY 排序编号的字段 ) AS "row_num" 效果拔群,实现了分组内返回排序编号的需求,特此记录。 数据库:sql server 来源: CSDN 作者: qq_34785454 链接: https://blog.csdn.net/qq_34785454/article/details/104054248

快速回顾MySQL:汇总和分组

浪子不回头ぞ 提交于 2020-01-16 23:32:19
10.3 汇总数据 我们经常需要汇总数据而不用把它们实际检索处出来,为此MySQL提供了专门的函数。使用这些函数,MySQL查询可用于检索数据,以便分析和报表的生成。这种类型的检索例子有以下几种: 确定表中的行数(或者满足某个条件或包含某个特定值的行数)。 获得表中行组的和。 找出表列(或所有行或某些特定的行)的最大值、最小值和平均值。 上述的例子都需要对表中数据(而不是实际数据本身)汇总。因此,返回实际表数据是对时间和处理资源的一种浪费(更不用说带宽了)。 MySQL提供了5个聚集函数。 聚集函数(aggregate function)运行在行组上,计算和返回单个值的函数。 函数 说明 AVG() 返回某列的平均值 COUNT() 返回某列的行数 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某列值之和 下面简单介绍这些函数 先创建下面的表: CREATE TABLE student( sid INT PRIMARY KEY, sname VARCHAR(20), ssex CAHR(1) ); CREATE TABLE score( sid INT PRIMARY KEY, sname VARCHAR(20), smath INT, senglish INT ); 10.3.1 AVG()函数 AVG()通过对表中行数计数并计算特定列值之和