sql分组

【MySQL】单表查询 -- 2019-08-17 03:55:08

蓝咒 提交于 2019-11-27 14:28:32
原文: http://blog.gqylpy.com/gqy/251 " 目录 where 约束 group by 分组查询 聚合函数 having 过滤 order by 查询排序 limit 限制查询的记录数 # 语法select 字段1, 字段2 ... from 表名 where 条件 group by field having 筛选 order by field limit 限制条数 重点在于关键字的执行优先级: from where group by having select distinct order by limit 1. 找到表:from 2. 拿着where指定的约束条件,去文件(表)中取出一条条记录 3. 将取出的一条条记录进行分组group by,如果没有group by, 则整体作为一组 4. 将分组的结果进行having过滤 5. 执行select 6. 去重 7. 将结果按条件排序:order by 8. 限制结果的显示条数 company.employee 员工id id int 姓名 name varchar 性别 sex enum 年龄 age int 入职日期 hire_date date 岗位 post varchar 职位描述 post_comment     varchar 薪水 salary     double 办公室

【MySQL】单表查询 -- 2019-08-17 03:47:56

拈花ヽ惹草 提交于 2019-11-27 14:27:56
原文: http://blog.gqylpy.com/gqy/251 " 目录 where 约束 group by 分组查询 聚合函数 having 过滤 order by 查询排序 limit 限制查询的记录数 # 语法select 字段1, 字段2 ... from 表名 where 条件 group by field having 筛选 order by field limit 限制条数 重点在于关键字的执行优先级: from where group by having select distinct order by limit 1. 找到表:from 2. 拿着where指定的约束条件,去文件(表)中取出一条条记录 3. 将取出的一条条记录进行分组group by,如果没有group by, 则整体作为一组 4. 将分组的结果进行having过滤 5. 执行select 6. 去重 7. 将结果按条件排序:order by 8. 限制结果的显示条数 company.employee 员工id id int 姓名 name varchar 性别 sex enum 年龄 age int 入职日期 hire_date date 岗位 post varchar 职位描述 post_comment     varchar 薪水 salary     double 办公室

mysql的floor()报错注入方法详细分析

纵然是瞬间 提交于 2019-11-27 13:37:34
刚开始学习sql注入,遇见了 select count(*) from table group by floor(rand(0)*2); 这么条语句。本着刚开始学习一定要弄明白的态度,在此做个总结。 (更好的阅读体验可访问 这里 ) 首先,只要该语句明白了,那么类似 select count(*),(floor(rand(0)*2))x from table group by x; 这样的变形语句基本上都可以变通(这里只是起了个别名)。 基本的查询 select 不必多说,剩下的几个关键字有 count 、group by 、floor、rand。 几个关键函数的说明 rand(0)*2 rand() 可以产生一个在0和1之间的随机数。 可见,每次产生的都不一样。当我们提供一个种子参数 0 后,再次查看: 可以发现,每次产生的值都是一样的。也可以称之为伪随机(产生的数据都是可预知的)。 查看多个数据看一下。( test 是我之前创建的一个拥有9条数据的表) 发现第一条数据与刚才查看的单个数据相符合,其它的数据也完全一样。 为什么要乘以 2 呢?这就要配合 floor 函数来说了。 floor(rand(0)*2) floor() 返回小于等于该值的最大整数。 之前我们了解到,rand() 是返回 0 到 1 之间的随机数,那么乘 2 后自然是返回 0 到 2 之间的随机数,再配合

【MySQL】单表查询 -- 2019-08-16 13:47:55

你离开我真会死。 提交于 2019-11-27 12:44:08
原文: http://blog.gqylpy.com/gqy/251 " 目录 where 约束 group by 分组查询 聚合函数 having 过滤 order by 查询排序 limit 限制查询的记录数 # 语法select 字段1, 字段2 ... from 表名 where 条件 group by field having 筛选 order by field limit 限制条数 重点在于关键字的执行优先级: from where group by having select distinct order by limit 1. 找到表:from 2. 拿着where指定的约束条件,去文件(表)中取出一条条记录 3. 将取出的一条条记录进行分组group by,如果没有group by, 则整体作为一组 4. 将分组的结果进行having过滤 5. 执行select 6. 去重 7. 将结果按条件排序:order by 8. 限制结果的显示条数 company.employee 员工id id int 姓名 name varchar 性别 sex enum 年龄 age int 入职日期 hire_date date 岗位 post varchar 职位描述 post_comment     varchar 薪水 salary     double 办公室

Oracle按不同时间分组统计

浪子不回头ぞ 提交于 2019-11-27 05:00:46
Oracle按不同时间分组统计的sql 如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- 14-2月 -08 20 10-3月 -08 2 14-4月 -08 6 14-6月 -08 75 24-10月-09 23 14-11月-09 45 04-8月 -10 5 04-9月 -10 44 04-10月-10 88 注意:为了显示更直观,如下查询已皆按相应分组排序 1.按年份分组 select to_char(exportDate,'yyyy'),sum(amount) from table1 group by to_char(exportDate,'yyyy'); 年份 数量 ----------------------------- 2009 68 2010 137 2008 103 2.按月份分组 select to_char(exportDate,'yyyy-mm'),sum(amount) from table1 group by to_char(exportDate,'yyyy-mm') order by to_char(exportDate,'yyyy-mm'); 月份 数量 ----------------------------- 2008-02 20 2008-03 2 2008-04

sql根据时间戳按年月日分组统计

别来无恙 提交于 2019-11-27 05:00:03
sql根据时间戳按年月日分组统计,用于按日期分类: create_time为时间格式(字段名create_time 根据自己表字段修改,数据库中存为201610071202) SELECT DATE_FORMAT(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks; SELECT DATE_FORMAT(create_time,'%Y%m%d') days,COUNT(id) COUNT FROM role GROUP BY days; SELECT DATE_FORMAT(create_time,'%Y%m') months,COUNT(id) COUNT FROM role GROUP BY months; create_time为时间戳格式(字段名create_time 根据自己表字段修改,数据库中存为1474959640): SELECT FROM_UNIXTIME(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks; SELECT FROM_UNIXTIME(create_time,'%Y%m%d') days,COUNT(id) COUNT FROM role GROUP BY days; SELECT

【MySQL】单表查询

亡梦爱人 提交于 2019-11-27 02:51:22
原文: http://106.13.73.98/__/25/ 目录 where 约束 group by 分组查询 聚合函数 having 过滤 order by 查询排序 limit 限制查询的记录数 # 语法select 字段1, 字段2 ... from 表名 where 条件 group by field having 筛选 order by field limit 限制条数 重点在于关键字的执行优先级: from where group by having select distinct order by limit 1. 找到表:from 2. 拿着where指定的约束条件,去文件(表)中取出一条条记录 3. 将取出的一条条记录进行分组group by,如果没有group by, 则整体作为一组 4. 将分组的结果进行having过滤 5. 执行select 6. 去重 7. 将结果按条件排序:order by 8. 限制结果的显示条数 company.employee 员工id id int 姓名 name varchar 性别 sex enum 年龄 age int 入职日期 hire_date date 岗位 post varchar 职位描述 post_comment     varchar 薪水 salary     double 办公室 office int

mysql查询、子查询、连接查询

自作多情 提交于 2019-11-26 22:49:33
mysql查询、子查询、连接查询 一、mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询。 group by子句(分组):按照“属性名”指定的字段进行分组。group by子句通常和count()、sum()等聚合函数一起使用。 having子句(筛选):有group by才能having子句,只有满足“条件表达式”中指定的条件的才能够输出。 order by子句(排序):按照“属性名”指定的字段进行排序。排序方式由“asc”和“desc”两个参数指出,默认是按照“asc”来排序,即升序。 limit(限制结果集)。 1、where——基础查询 where常用运算符: 2、group by 分组 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。 select 类别, sum(数量) as 数量之和 from A group by 类别 注:group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中。 mysql中五种常用的聚合函数: (1)max(列名):求最大值。 (2)min(列名):求最小值。 (2)sum(列名):求和。 (4)avg(列名):求平均值

综合数据和分组函数

我是研究僧i 提交于 2019-11-26 20:34:25
分组函数是对一批(一组)数据进行操作(综合)之后返回一个值。这批数据可能是整个表,也可能是按某种条件把该表分成的组。 一、分组函数 Oracle常用的分组函数有以下5个: COUNT、AVG、SUM、MAX、MIN 1.COUNT的格式如下: COUNT {*[DISTINCT| ALL ] 表达式} 该函数返回查询的行数。 SQL > select count ( * ) 2 from emp; COUNT ( * ) -- -------- 14 备注:COUNT(*)返回表中所有的行包括空行和重复的行。 2.AVG和SUM函数 AVG函数的格式如下: AVG ([DISTINCT| ALL ]表达式) 该函数返回表达式的平均值。 SUM函数的格式如下: SUM ([DISTINCT| ALL ]表达式) 该函数返回表达式的总和。 SQL > select avg (sal) "Average Salary", sum (sal) "Summary", count (sal) "Records" 2 from emp; Average Salary Summary Records -- ------------ ---------- ---------- 2073.21429 29025 14 3.MIN和MAX函数 MAX函数的格式如下: MAX ([DISTINCT|

[转]LINQ分组查询统计(group by、count)

半腔热情 提交于 2019-11-26 17:22:42
转自: http://www.cnblogs.com/pato/archive/2011/03/04/1971003.html 这里介绍Linq使用Group By和Count得到每个CategoryID中产品的数量,Linq使用Group By和Count得到每个CategoryID中断货产品的数量等方面。 学经常会遇到Linq使用Group By问题,这里将介绍Linq使用Group By问题的解决方法。 1.计数 var q = from p in db.Products group p by p.CategoryID into g select new { g.Key, NumProducts = g.Count() }; 语句描述:Linq使用Group By和Count得到每个CategoryID中产品的数量。 说明:先按CategoryID归类,取出CategoryID值和各个分类产品的数量。 2.带条件计数 var q = from p in db.Products group p by p.CategoryID into g select new { g.Key, NumProducts = g.Count(p = > p.Discontinued) }; 语句描述:Linq使用Group By和Count得到每个CategoryID中断货产品的数量。 说明