首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Oracle学习笔记_05_分组函数

    ,包括重复行和带有空值的行) MAX([DISTINCT|ALL]expr) -- 求最大值,忽略空值 MIN([DISTINCT|ALL]expr)...-- 求最小值,忽略空值 SUM([DISTINCT|ALL]n) -- 求和,忽略空值  注:  (1) DISTINCT 使函数只考虑非重复值,ALL则考虑包括重复值在内的所有值...[ORDER BY column]; 注: (1)SELECT 中出现的列,如果未出现在分组函数中,则GROUP BY子句必须包含这些列         (2)WHERE 子句可以某些行在分组之前排除在外...       (3)不能在GROUP BY 中使用列别名        (4) 默认情况下GROUP BY列表中的列按升序排列        (5) GROUP BY 的列可以不出现在分组中  2.示例...按多个字段进行分组 select department_id,job_id,avg(salary),sum(salary) from employees group by department_id

    1.5K21

    MySQL 核心操作:表的CRUD、聚合与分组深度实践

    如果VALUES子句中的值与表定义的列顺序完全一致,那么列名列表可以被省略。这条语句省略了列名列表,直接提供了id和name的值。MySQL会按表定义的顺序id, sn, name, qq来匹配值。...由于id是自增主键,可以插入NULL或不提供该列,让系统自动生成。这里插入NULL后,id自动生成为1(因为这是第一条记录)。2....指定列查询可以明确列出需要查询的列。只查询了id, name, math三列,并且列的顺序与表定义不同,证明了查询列的顺序是灵活的。...按数学成绩升序排序。ASC关键字可以省略。NULL值在排序时被视为最小值。...COUNT():计数SUM():求和AVG():求平均值MAX():求最大值MIN():求最小值`COUNT()`计算了表中的总行数。*COUNT(math)计算了math列非NULL值的数量。

    25010

    Mysql常用查询语句

    SELECT * FROM tb_stu WHERE month(date) = ‘$_POST[date]’ ORDER BY date ; 注:SQL语言中提供了如下函数,利用这些函数可以很方便地实现按年...二十对统计结果进行排序 函数SUM([ALL]字段名) 或 SUM([DISTINCT]字段名),可实现对字段的求和,函数中为ALL时为所有该字段所有记录求和,若为DISTINCT则为该字段所有不重复记录的字段求和...多列数据分组统计与单列数据分组统计类似 SELECT *,SUM(字段1*字段2) AS (新字段1) FROM 表名 GROUP BY 字段 ORDER BY 新字段1 DESC SELECT...,即不是要分组的列 二十三多表分组统计 SELECT a.name,AVG(a.price),b.name,AVG(b.price) FROM tb_demo058 AS a,tb_demo058_1... AS b WHERE a.id=b.id GROUP BY b.type;

    6.6K20

    MySQL查询分组后如何分隔和聚合合并数据,来看这一篇文章就够了!

    [SEPARATOR str_val]) DISTINCT:可选。移除重复的值。 expression:要连接的列或表达式。 ORDER BY:可选。对结果集中的值进行排序。...使用 ORDER BY 对结果进行排序 此查询将 employees 表中的数据按 department 列进行分组,并使用 GROUP_CONCAT(name ORDER BY name ASC) 函数将每个分组中...name 列的值按字母顺序连接成一个以逗号分隔的字符串。...使用 SEPARATOR 指定分隔符 此查询将 employees 表中的数据按 department 列进行分组,并使用 GROUP_CONCAT(name SEPARATOR '; ') 函数将每个分组中...需要注意的是,DISTINCT关键字是作用在GROUP_CONCAT()函数内部的整个表达式上的,而不是单独作用在每个字段上。

    2.8K32

    MySQL50-6-第16-20题

    MySQL50-6-第16-20题 本文中介绍的是第16-20题,涉及到的知识点包含: 自连接 SQL实现排序 多表查询 题目是: 检索01课程分数小于60,按分数降序排列的学生信息 按平均成绩从高到低...题目16 题目需求 检索01课程分数小于60,按分数降序排列的学生信息 分析过程 01课程分数:Score——c_id,s_score,s_id 学生信息:Student-------s_id,s_name...没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。...: case 语句用于对每个分数贴标签 sum 语句对相应的语句中的1进行求和 select s.c_id ,c.c_name ,max(s.s_score) ,min(s.s_score)...题目19 题目需求 按照各科成绩进行排序,并且显示排名 分析过程 题目的意思是:将每科的成绩单独进行排名,类似如下的效果: 课程名 分数 排名 英语 99 1 英语 92 2 英语 89 3 数学 88

    52410

    常用SQL查询语句,值得回看不要错过,好记性不如多看看!

    SELECT * FROM tb_stu WHERE month(date) = ‘$_POST[date]’ ORDER BY date ; 注:SQL语言中提供了如下函数,利用这些函数可以很方便地实现按年...二十、对统计结果进行排序 函数SUM([ALL]字段名) 或 SUM([DISTINCT]字段名),可实现对字段的求和,函数中为ALL时为所有该字段所有记录求和,若为DISTINCT则为该字段所有不重复记录的字段求和...多列数据分组统计与单列数据分组统计类似 SELECT *,SUM(字段1*字段2) AS (新字段1) FROM 表名 GROUP BY 字段 ORDER BY 新字段1 DESC SELECT id...num) AS sumprice FROM tb_price GROUP BY pid ORDER BY sumprice DESC 注:group by语句后面一般为不是聚合函数的数列,即不是要分组的列...=b.id GROUP BY b.type;

    3.5K30

    如何分析商品订单?

    付费时间”分组,每天的付费人数用汇总函数(count对用户ID这一列统计有多少行),每天的付费金额用汇总函数(sum对付费金额这一列求和),每天的付费单量要用汇总函数(count对订单号这一列有多少行)...2.上面涉及到的列用户ID、付费金额、订单号都在“订单明细表”里 image.png 3.需要注意的是,要统计的是“人数”而不是“人次”,所以在统计“用户ID”时要做一次去重处理 4.题目中并没有明确说明...这道题目要我们找到的是“注册表”中有注册的用户,同时在“订单明细表”中指定日期消费过的用户,也就是两个表中“用户ID”这一列数据有交集的数据。... = b.用户ID; 因为要统计的是付费人数,付费金额,我们在上一步SQL中加入汇总函数可以得到 1 select count(distinct 用户ID) as 付费人数, 2 sum(付费金额)...as 付费金额 3 from 订单明细表 as a 4 inner join 注册表 as b 5 where a.用户ID = b.用户ID; 4.找到两张表“用户ID”列共有的数据后,设置条件 where

    1.2K20

    软件测试必备的数据库SQL查询语法

    from students as s; 消除重复行 在 select 后面列前使用 distinct 可以消除重复的行 select distinct 列1,... from 表名; 例: select...,即降序 例 1:查询未删除男生信息,按学号降序 select * from students where gender=1 and is_delete=0 order by id desc; 例 2...select min(id) from students where is_delete=0; 5.4 求和 sum(列)表示求此列的和 例 4:查询男生的总年龄 select sum(age) from...students group by gender; 根据 gender 字段来分组,gender 字段的全部值有 4 个'男','女','中性','保密',所以分为了 4 组 当 group by 单独使用时...,只显示出每组的第一条记录, 所以 group by 单独使用时的实际意义不大 6.2 group by + group_concat() 6.2.1 group_concat(字段名)可以作为一个输出字段来使用

    3.4K20

    索引的数据结构及算法原理--索引选择性与前缀索引

    例如,上文用到的employees.titles表,如果title字段经常被单独查询,是否需要建索引,我们看一下它的选择性: SELECT count(DISTINCT(title))/count(*)...Selectivity | +-------------+ | 0.0000 | +-------------+ title的选择性不足0.0001(精确值为0.00001579),所以实在没有什么必要为其单独建索引...有一种与索引选择性有关的索引优化策略叫做前缀索引,就是用列的前缀代替整个列作为索引key,当前缀长度合适时,可以做到既使得前缀索引的选择性接近全列索引,同时因为索引key变短而减少了索引文件的大小和维护开销...+-------------+-----------+------+---------------+------+---------+------+--------+-------------+ | id...--------+---------------------------------------------------------------------------------+ | Query_ID

    72310

    SQL 基础(四)单关系数据查询

    select distinct major from tb_student 如果不加 distinct ,查询结果将会显示所有符合结果(含重复列),不易阅读 4.查询所有学生的学号/姓名/身份 SELECT...的学生学号及课程号信息 select sno,cno from tb_score where score IS NULL -- 比较运算符 IS NULL 统计汇总查询 常用库函数(聚合函数): 函数名称 功能 AVG 按列求平均值...SUM 按列求和 MAX 求列最大值 MIN 求列最小值 COUNT 按列求个数 count(*) 对表中数目进行计数,无论是否为空 count(colum) 对特定列中具有的值计数,忽略 NULL...关键字 分组查询 select 中既有基本字段又有聚合函数时需要 group by,否则将会出现语法错误 空值作为单独分组返回值 查询选修两门课以上课程的学生学号和选课总数 select sno,...sno,score from tb_score where (cno='c10') order by score DESC 成绩表中,查询选修 c10,c03,c09 或 c20 课程的学号和成绩,结果按学号升序排列

    1.7K30

    EXPLAIN 使用分析

    rows 扫描出的行数(估算的行数) filtered 按表条件过滤的行百分比 Extra 执行情况的描述和说明 字段含义 id SELECT识别符,即查询序列号。...ref: 非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,它返回所有匹配某个单独值的行,可能会找多个符合条件的行,属于查找和扫描的混合体。...NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。 一般保证查询至少达到range级别,最好能达到ref。...该列完全独立于EXPLAIN输出所示的表的次序。这意味着在possible_keys中的某些键实际上不能按生成的表次序使用。 如果该列是NULL,则没有相关的索引。...distinct 优化distinct操作,在找到第一匹配的元组后即停止找同样值的动作。

    1.4K20

    MySQL括号字符串计数

    字典表 + 递归查询 总结: 参考: 问题提出: 有一张表 t1 存储用户评论内容,如下所示(只列出相关列): 图片 现在想得出每种评论字数的个数,每个字符包括标点...总的想法是,首先对评论字符串以“]”为分隔符转多行,然后针对不同情况对每行求字符长度,之后按每条评论ID分组求和,得到符合规则的每条评论的长度,最后按评论长度分组进行二次聚合,得到每种长度的个数。...数字辅助表nums是只有一列ID的1、2、3......数列,关联它用笛卡尔积由原表的一行制造出多行。...8-11行中的子查询,得出每条评论中成对中括号的个数(l1列),0表示评论字符串中没有成对的中括号,结果如下: 图片 7-12行中的子查询,结果为使用以“]”为分隔符转的多行: 图片...之后按每条评论ID分组求和,得到符合规则的每条评论的长度,结果如下: 图片 最外层查询按评论长度分组进行二次聚合,得到每种长度的个数。 3.

    1.8K20

    老司机教你用SQL之查询操作

    from students as s; 消除重复行 在select后面列前使用distinct可以消除重复的行 select distinct 列1,... from 表名; 例: select distinct...,按照学号降序 select * from students where is_delete=0 ordaer by id desc; 例2:查询未删除学生信息,按名称升序 select * from...select min(id) from students where is_delete=0; 求和 sum(列)表示求此列的和 例4:查询男生的总年龄 select sum(age) from students...女 | | 中性 | | 保密 | +--------+ 根据gender字段来分组,gender字段的全部值有4个'男','女','中性','保密',所以分为了4组当group by单独使用时...,只显示出每组的第一条记录, 所以group by单独使用时的实际意义不大 group by + group_concat() group_concat(字段名)可以作为一个输出字段来使用 表示分组之后

    1.5K10
    领券