sql分组

SQL(leetcode小白刷题)自用

和自甴很熟 提交于 2020-03-03 01:24:04
@Leetcode简单题自用整理 TOC 1. 查找重复数据 题目描述 编写一个SQL查询,查找所有 重复的XXXXX ,也可以是 重复N次 的,只需改变计数条件即可。 【解题思路】 思路1 看到“找重复”的关键字眼, 首先要使用 分组函数(group by) , 再用聚合函数中的 计数函数count() 给查找的列计数。 分类汇总后,生成一个辅助表,可以从该子表中筛选查找列出计数大于1的元素,即重复的需要查找的内容。 使用辅助表结合where进行条件筛选进行嵌套子查询。 思路2 使用group by 直接在后面使用having 进行计算,筛选符合条件的。 前面提到聚合函数(count),where字句无法与聚合函数一起使用。因为where子句的运行顺序排在第二,运行到where时,表还没有被分组。 如果要对分组查询的结果进行筛选,可以使用having子句。 作者:houziAI 链接:https://leetcode-cn.com/problems/duplicate-emails/solution/tu-jie-sqlmian-shi-ti-ru-he-cha-zhao-zhong-fu-shu-/ 来源:力扣(LeetCode) 注意事项 : 1、where 后不能跟聚合函数,因为where执行顺序大于聚合函数。where > group by > having >

Mysql基础(二)-常见函数与查询

依然范特西╮ 提交于 2020-03-01 15:28:27
进阶四:常见函数 功能:类似于java 中的方法,将一组逻辑语句分装在方法体重,对外暴露方法名 调用: select 函数名(实参列表)【from 表】 特点: 1. 叫什么(函数名) 2. 干什么(函数功能) 分类: 单行函数 如:concat,length,ifnull等 2.分组函数 功能:供统计使用,又称为统计函数,聚合函数,组函数等 A. 单行函数 一.字符函数 1. length :用于获取参数值的 字节 个数 `select length('john'); 2. concat : 拼接字符串 select concat(last_name,'_',first_name) 姓名 from employees; 3. upper ,lower select upper('john'); 变大写 select lower('JOHN'); 变小写 4. substr,substring 用于截取子字符串,注意:索引从1开始 截取从指定索引处后面所有字符 select substr('李莫愁爱上了陆展元',7) out_put 截取从指定索引处指定字符长度的字符 select substr('李莫愁爱上了陆展元',1,3) out_put 案例:姓名中首字母大写,其他字符是小写然后用_拼接,显示出来 select concat(upper(substr(last_name,1

SQL语句where,Group By,having order by 的详细使用方法

吃可爱长大的小学妹 提交于 2020-03-01 01:32:14
1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 P.S. 这里真是体会到了一个好的命名的力量,Group By从字面是直接去理解是非常好理解的。恩,以后在命名的环节一定要加把劲:)。话题扯远了。 2. Group By 的使用: 上面已经给出了对Group By语句的理解。基于这个理解和SQL Server 2000的联机帮助,下面对Group By语句的各种典型使用进行依次列举说明。 2.1 Group By [Expressions]: 这个恐怕是Group By语句最常见的用法了,Group By + [分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。比如有如下数据集,其中水果名称(FruitName)和出产国家(ProductPlace)为联合主键: FruitName ProductPlace Price Apple China $1.1 Apple Japan $2.1 Apple USA $2.5 Orange China $0.8 Banana China $3.1 Peach USA $3.0 如果我们想知道每个国家有多少种水果

sql分组统计“group by”

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-01 00:15:17
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。 准备数据 先准备数据,数据如图所示: 按app字段分组 select fun(logs.id) as c, -- fun表示聚合函数 logs.app from public.logs as logs group by logs.app; 计数 count select count(logs.id) as c, logs.app from public.logs as logs group by logs.app order by c desc limit 10; 求和 sum select sum(logs.packets) as s, logs.app from public.logs as logs group by logs.app order by s desc limit 10; 求均值 avg select avg(logs.packets) as s, logs.app from public.logs as logs group by logs.app order by s desc limit 10; 取最大值 max select max(logs.packets) as s, logs.app from public.logs as logs group by logs.app

sql按任意时间段分组统计

与世无争的帅哥 提交于 2020-02-28 19:35:03
任意时间序列数据都可以按时间分组。 timestamp 为时间戳。 按每五分钟统计日志的数目 select floor(cast(logs.timestamp as int) / 60 / 5) as dt, count(logs.id) from ( select logs.id, logs.timestamp from public.logs as logs order by logs.id asc limit 10) as logs group by floor(cast(logs.timestamp as int) / 60 / 5); 来源: oschina 链接: https://my.oschina.net/whutzl/blog/3178366

关于order by 和 group by的理解记忆

你离开我真会死。 提交于 2020-02-24 03:29:11
一、字面理解 order by 排序;order by 出现的位置必须在from 或者 where 子句之后,且默认的排序方式为升序。 group by 分组;这里的“组”其实也说明了它需要配合聚合函数一起使用,根据“结果集”进行分组。 PS:聚合函数: count()、avg()、sum()、max()等等 二、实际场景使用 1.基表:即将所有的数据查询出来,也包含重复的行。 使用order by:order by排序查询,根据默认将结果升序展示。 使用group by:group by 分组查询出来的数据不包括重复的行,这里的空格表示将空行也单独作为一个组。 当查询product、price时使用group by时会出现报错信息: 根据标注的错误信息可以知道,price列查出来的时单行的信息,但是这里的group by又是分组查询。这样的话每一行的price是无法展示出来的,就会提示报错信息。 正确写法是将price使用聚合查询进行 合组 ,再通过group by product_type_id进行 分组 。 2.在group by语句中使用where子句查询会提示错误,即在分组函数中使用where子句会报错。 这里就要用到having子句去进行条件选择 原因如下: 1.where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据

sql的查询语句的总结

我怕爱的太早我们不能终老 提交于 2020-02-21 07:10:35
一:基本的查询sql 1:基本常用查询 select * from student; --select select all sex from student; --all 查询所有 select distinct sex from student; --distinct 过滤重复 --count 统计 select count(*) from student; select count(sex) from student; select count(distinct sex) from student; selecttop 3 * from student; --top 取前N条记录 --aliascolumn name 列重命名 select id as 编号, name '名称', sex 性别 from student; --aliastable name 表重命名 select id, name, s.id, s.name from student s; --column 列运算 select (age + id) col from student; select s.name + '-' + c.name from classes c, student s where s.cid = c.id; 2:where筛选条件 1 --where 条件 2 select *

数据库基本操作命令

廉价感情. 提交于 2020-02-20 06:41:29
数据库 数据库的基本概念: MySql DBMS = Database Management System DB的特点 持久化 数据库就是一个文件系统 方便储存和管理 提供统一的操作方式 DB2 IBM的数据库,银行系统常用 SQLite嵌入式小型数据库,手机端和浏览器常用 MySql阿里巴巴版 MariaDB——MySql原作者的另一个产品,底层和MySql一样 两个cmd命令: services.msc 打开windows服务窗口 net start mysql 启动mysql服务 net stop mysql 停止mysql服务 netstat -aon显示端口列表 cmd窗口显示中文乱码问题 切换为UTF-8:chcp 65001 切换回GBK:chcp 936 登录数据库 mysql -uroot -proot (默认连接3306端口) 如果-p之后不写密码,会提示输入密文密码,这样更安全 mysql -h127.0.0.1 -uroot -proot -P端口号 mysql --host=ip --user=root --password=root 两种连接外部数据库的方式 quit 退出数据库 exit; 关闭cmd mysql软件安装目录 my.ini ——mysql的配置文件 mysql的数据目录结构 数据库——文件夹 表——文件 数据——文件中的数据 SQL语句

postgreSQL窗口函数总结

时光总嘲笑我的痴心妄想 提交于 2020-02-16 19:30:03
postgreSQL窗口函数总结 1 窗口函数说明 2 row_number/rank/dense_rank的区别 2 窗口函数语句 2 1 准备数据 3 1.1 创建测试的表test1 3 1.2 插入数据到test1表中 3 2 rank over 窗口函数使用 3 2.1 按照分区查看每行的个数 3 2.2 按照分区和排序查看每行的数据 4 2.3 查看每个部门最高的数据 4 3 row_number over 窗口函数的使用 5 3.1 显示数据的行号 5 3.1.1 顺序显示行号 5 3.1.2 获取一段内的数据 5 3.2 显示分区的个数 6 3.3 按照department分组wages排序显示数据 6 3.4 查看每个部门的最高的数据 7 4 dense_rank窗口函数使用 7 4.1 rank与dense_rank的区别 7 4.2 dense_rank 窗口函数的显示 7 4.3 rank 窗口函数的显示 8 5 rank/row_number/dense_rank比较 8 6 percent_rank 窗口函数的使用 9 6.1 计算分组中的比例 9 7 grouping sets 函数的使用 10 7.1 先按照wages分组再按照department进行分组 10 8 聚合函数+窗口函数使用 11 8.1 查看一个部门的个数 11 8.2

MySQL 查询语句

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-15 02:27:55
排序查询 通过 ORDER BY 子句,可以将查询出的结果进行排序 ( 排序只是显示方式,不会影响数据库中数据的顺序 ) ASC: 升序,默认值 DESC: 降序 单列排序 只按某一个字段进行排序,单列排序。 SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC]; 如: -- 查询所有数据,使用年龄降序排序 select * from student order by age desc; 组合排序 同时对多个字段进行排序,如果第 1 个字段相等,则按第 2 个字段排序,依次类推。 SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC]; 如: -- 查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩升序排序 select * from student order by age desc, math asc; 聚合函数 平常我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询, 它是对一列的值进行计算,然后返回一个结果值。 聚合函数会忽略空值 NULL 。 五个聚合函数 SQL 中的聚合函数 作用 max( 列名 ) 求这一列的最大值 min( 列名 ) 求这一列的最小值 avg( 列名 )