前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了…印象中就只有基本的SQL语句和相关一些概念….写下本博文的原因就是记载着Oracle一些以前没注意到的知识点...…以后或许会有用… 实例与数据库概念 Oracle数据库服务器由两部分组成: 实例:理解为对象,看不见的 数据库:理解为类,看得见的 我们在安装Oracle的时候,已经填写过自己数据库的名称了,一般实例与数据库的名称是一致的...IO输入输出SQL语句 我们可以在sqlplus中使用spool命令把SQL语句保存在硬盘中,具体的例子: spool e:/oracle-day01.sql; 使用spool off命令,保存...SQL语句到硬盘文件e:/oracle-day01.sql,并创建sql文件,结束语句 spool off; 当然了,我们也可以把硬盘中的SQL文件在sqlplus中执行,只要以下的命令就行了:...分组中我们已经有了deptno字段了,而我们select 后面跟着也就是多行函数和该字段而已,为啥就错了呢?????
--即分组依据 思路:把时间段折分成连续二段,一段是从当天08:00到11:59分的数据,一段是当日12:01到19:59分的数据,然后用union all合并起来,最后再用sum求和 代码 select
目录 分组查询 概念 语法以及执行顺序 组函数 group by 子句 练习 having用法 练习 ---- 分组查询 概念 所谓组查询即将数据按照某列或者某些列相同的值进行分组,然后对该组的数据进行组函数运用...语法以及执行顺序 SQL 顺序 select ... 5 from ... 1 where ... 2 group by col_name,col_name 3 having ... 4 order by...... 6 执行的时候,先from,再where限制每一条记录的返回,返回结果进行分组,应用组函数,再用having限制组函数返回的结果,接下来是select抽取要显示的列,最后排序 group by...5.当group by子句中出现多列的时候,表示按照从左至右的顺序进行分组,即先按照第一列分组, 然后再第一列分好的组里面 按照第二列进行分组,以此类推。...练习 1.查看职称不以VP开头的所有员工, 2.并且将他们以职称分组, 3.求各职称的工资总和, 4.将工资综合>5000的职称和工资总合显示出来。
分组函数的介绍 分组函数作用于一组数据,并对一组数据返回一个值....(引用网上的一张图) 分组函数的使用规则 SELECT [column,] group_function(column) FROM table [WHERE condition] [...除了COUNT(*)和DISTINCT(COLUMN)之外,其他所有分组函数都会忽略列表中的空值,然后再进行计算 在分组函数中使用NVL函数可以使分组函数强制包含含有空值的记录 select avg(...,所有列都必须包含在GROUP BY子句中 --按照班级分组后求每个班级的得分最高的值,如果想将sclass查出则需要在group by语句中指定按其进行分组得到每班最大值 select sclass,...SELECT列表中 --group by 所指定的列不一定要出现在查询列表中 select sclass,sum(sscore) from stu_class group by sdept,sclass; 按多列分组的
Create Or Replace Function Money2Chinese(Money In Number) Return Varchar2 Is str...
今日真题 题目介绍: 按日期分组销售产品 group-sold-products-by-the-date 难度简单 SQL架构 表 Activities : +-------------+-...编写一个 SQL 查询来查找每个日期、销售的不同产品的数量及其名称。 每个日期的销售产品名称应按词典序排列。 返回按 sell_date 排序的结果表。 查询结果格式如下例所示。...---+----------+------------------------------+ 对于2020-05-30,出售的物品是 (Headphone, Basketball, T-shirt),按词典序排列...对于2020-06-01,出售的物品是 (Pencil, Bible),按词典序排列,并用逗号分隔。 对于2020-06-02,出售的物品是 (Mask),只需返回该物品名。...``` sql select sell_date, count(distinct product) num_sold, group_concat(distinct product order
--================================= --SQL基础-->分组与分组函数 --================================= /* 一、分组: 分组函数可以对行集进行操作...使用group by column1,column2,..按columm1,column2进行分组,即column1,column2组合相同的值为一个组 二、常用分组函数: */ AVG([DISTINCT...BY列表中的列按升序排列 GROUP BY 的列可以不出现在分组中 七、分组过滤: 使用having子句 having使用的情况: 行已经被分组 使用了组函数 满足having子句中条件的分组将被显示...、更多 */ Oracle 数据库实例启动关闭过程 Oracle 10g SGA 的自动化管理 使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例 Oracle实例和Oracle数据库...(Oracle体系结构) SQL 基础-->常用函数 SQL基础-->过滤和排序 SQL 基础-->SELECT 查询
分组统计 · 限制一:统计函数单独使用时(没有 GROUP BY 子句)只能够出现统计函数,不能够出现其它字段。...emp ; 错误的代码:SELECT COUNT(empno),ename FROM emp ; · 限制二:使用统计查询时(存在 GROUP BY 子句),SELECT 子句之中只允许出现统计函数与分组字段...emp GROUP BY deptno ; 错误的代码: SELECT deptno,COUNT(empno),ename FROM emp GROUP BY deptno ; · 限制三:统计函数在分组之中可以嵌套使用...,但是嵌套之后的统计查询之中,SELECT 子句不允许再出现 任何的字段,包括分组字段。...· WHERE 子句:是在分组前使用,而且不能够使用统计函数进行验证,经过 WHERE 筛选后的数据才可以分组; · HAVING 子句:必须结合 GROUP BY 子句一起出现,是在分组后的过滤,可以使用统计函数
以一方为准 oracle以内部数字格式存储日期:年,月,日,小时,分钟,秒 ···sysdate/current_date -- 以date类型返回当前的日期 ···add_months(d,x)...)、max min: 最大值 最小值 3)、sum:求和 4)、avg:平均值 注意: 1、组函数仅在选择列表和Having子句中有效 2、出现组函数,select 只能有组函数或分组字段...---- 三、分组与过滤组信息 分组: group by , 将符合条件的记录 进一步的分组 ?...group by :分组 1)、select 出现分组函数,就不能使用 非分组信息,可以使用 group by 字段 2)、group by字段 可以不出现 select 中 ,反之select 除组函数外的
使用group by分组 在多行函数中不能直接使用普通字段,除非group by 在多行函数中不能直接使用单行函数,除非group by group by...学习: ---1、使用group by进行数据分组 select 多行函数,分组字段 from 表名 group by 分组字段 ---2、多字段进行分组的时候...,按照字段顺序进行分组,第一条件分组完成后,继续使用其他条件依次分组。...,分组的字段可以出现在查询中,其他字段依然不可以 查询不同工作岗位的员工数 select * from emp for update select...要高,能使用where的情况下尽量不要使用having 查询不同部门的不同工作岗位的并且人数大于1的信息 使用where语句进行筛选 where条件语句sql
它是数据库的标准功能之一,主流的数据库比如Oracle,PostgreSQL都支持窗口函数功能,MySQL 直到 8.0 版本才开始支持窗口函数。 ...窗口函数,简单来说就是对于一个查询SQL,将其结果集按指定的规则进行分区,每个分区可以看作是一个窗口,分区内的每一行,根据 其所属分区内的行数据进行函数计算,获取计算结果,作为该行的窗口函数结果值。...例如,以下查询返回每个员工的销售额,以及按会计年度计算的员工总销售额: SELECT fiscal_year, sales_employee, sale, SUM(sale) OVER (PARTITION...请注意,SQL标准支持FROM FIRST和FROM LAST。但是,MySQL只支持FROM FIRST。...经典题目 排名问题:每个部门按业绩来排名 topN问题:找出每个部门排名前N的员工进行奖励 leetcode 185.
select job,avg(sal) from emp group by job having avg(sal)>2500;
在某个时间点以后创建的数据文件,名称中的db_name和“datafile”都是大写,而以前都是小写。...进一步分析发现,我们将数据库升级到19c,并将compatible由11.2.0.4改为19.3.0.0后,数据文件路径就改为大写了。 使用文件系统作为存储介质的数据库未出现此问题。...(Doc ID 2542927.1) APPLIES TO: Oracle Database Configuration Assistant - Version 18.3.0.0.0 and later...files contains uppercase DB_UNIQUE_NAME which you specified. ----------------------------- /u01/app/oracle.../oracle/oradata/ORCL/pdbseed; ... rmanRestoreDatafiles.sql:set newname for datafile 4 to '..oradata
业务场景 MySQL按小时分组统计日志记录数量。...最近需要统计一些日志流水,统计出打卡的高峰期,所以需要对日志流水按小时进行分组统计,统计出每半小时或者每小时内的打卡次数 按小时统计 这里使用DATE_FORMAT函数,然后再根据createTime进行分组...: 基于此,还可以继续拓展,按每N分钟、每分钟、每天进行分组统计 每N分钟统计 前面是按照半小时(30分钟),依此类推,可以按n分钟进行分组统计,统计n分钟内的打卡次数,比如统计每10分钟内的打卡次数...: 按日期统计 按照日期进行分组,统计每天的打卡次数: SELECT device_id, DATE( create_time ) AS createTime, count(*) AS...t_user_atten_record WHERE com_id = 1111699 GROUP BY device_id, createTime ORDER BY device_id, createTime; 按天分组统计
rollup函数 本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种 环境准备 create table dept as select...假如再加个时间统计的,可以用下面sql: select to_char(b.hiredate, 'yyyy') hiredate, a.dname, b.job, sum(b.sal) from scott.dept
一个数据表里面字段有年、月、日、金额、支付方式等字段,然后现在想写个sql语句,把每一天的每种支付方式金额(支付方式有多重)排在同一行, 最后在增加一列小计当前的所有支付方式的金额。...如下图: 原sql查询出来的结果是这样的: ?...------------------------------------------------------------------------------------------- 然后想实现的sql...这可为难了我了,简单的增删改查左右链接sql语句我还会写,这个稍微复杂一点我就不知道如何下手了。该怎么分组,然后把行增加为列呢? 去找度娘搜的时候,都不知道怎么描述自己的想搜的关键字。...最后找了一位sql高手同学帮忙解决了这个问题, 人家只是一句简单的sql语句就把我的需求给实现了,实在是让我佩服!这个pivot关键是什么东东,我还第一次看见,从来没用过,这么强大!
oracle ORA-00937: 非单组分组函数? 这种错误报告通常使用聚合函数,如count和sum,但不使用groupby来声明分组模式。 例如,有一个学生表。...我们必须告诉数据库根据哪个字段进行分组。正确的书写方法是: 选择班级号,从学生表中按班级号分组计数(学生号) 不是单一的分组函数。...必须使用group by来声明要用作分组计算基础的字段。正确的写作方法是:从成绩表中选择姓名、总和(单科成绩)作为总分,按姓名分组。...现在名字不够,还要加班级,所以写:从成绩表中选择班级、姓名、总和(单科成绩)作为总分,按姓名分组,实际又报错了。 这是因为类只放在查询列中,并且没有用group by声明。...所以它应该是:从成绩表中选择班级,姓名,和作为总分,按班级分组,姓名。
参考博客: https://blog.csdn.net/qtvb1987/article/details/42081585
分组统计需要使用 GROUP BY 来分组 语法: SELECT * |列名 FROM 表名 {WEHRE 查询条件} {GROUP BY 分组字段} ORDER BY 列 名 1 ASC|DESC...我们发现报了一个 ORA-00937 的错误 注意: 1.如果使用分组函数,SQL 只可以把 GOURP BY 分组条件字段和分组函数查询出来,不能有其他字段。...2.如果使用分组函数,不使用 GROUP BY 只可以查询出来分组函数的值 ? 范例:按部门分组,查询出部门名称和部门的员工数量 ?
领取专属 10元无门槛券
手把手带您无忧上云