随笔分类 - SQL
摘要:Oracle层次查询的语法如下:下面根据两道“烧脑”的题具体来体现:1. 根据时间先后顺序,十二星座的英文名称用逗号串起来为'Aries,Taurus,Gemini,Cancer,Leo,Virgo,Libra,Scorpio,Sagittarius,Capricorn,Aquarius,Pisce...
阅读全文
摘要:GROUP_ID首先我们看看官方的解释:大意是GROUP_ID用于区分相同分组标准的分组统计结果。解释起来比较抽象,下面我们来看看具体的案例。例1:单一分组SQL> select group_id(),deptno,sum(sal) from emp group by rollup(deptno);...
阅读全文
摘要:在Oracle中,如果要实现行列转换,较为常见的是用DECODE和CASE语句。对于简单的行列转行,DECODE和CASE语句尚能应付。在逻辑比较复杂,分组聚合较多的场景中,DECODE和CASE语句则力有不逮。而pivot则可完美解决这一切。首先,我们来看看Oracle对于其的解释:可见,pivo...
阅读全文
摘要:GROUP BY的扩展主要包括ROLLUP,CUBE,GROUPING SETS三种形式。ROLLUProllup相对于简单的分组合计增加了小计和合计,解释起来会比较抽象,下面我们来看看具体事例。例1,统计不同部门工资的总和和所有部门工资的总和。SQL> select deptno,sum(sal)...
阅读全文
摘要:最近在学习的过程中,发现一个挺有意思的函数,它可实现对列值的拼接。下面我们来看看其具体用法。用法:对其作用,官方文档的解释如下:For a specified measure,LISTAGGorders data within each group specified in theORDERBYcl...
阅读全文
摘要:1. 做一个3*3的加法表SQL> select a||'+'||b||'='||(a+b) from (select rownum a from all_objects where rownum0 and b.n0 and c.n0 and d.n0;6.每个雇员的薪水(SAL)都对应到一个薪水级...
阅读全文
摘要:在这里,我们会用到DBMS_RANDOM包和CASE WHEN语句,思路如下:一、利用DBMS_RANDOM.RANDOM函数随机生成数值,然后对数值进行取模,如果我们要在10个元素中随机读取的话,那我们需要对10进行取模。二、再将取模后的值利用CASE WHEN语句与元素进行关联。譬如,我有一个组...
阅读全文
摘要:EMP表是Oracle测试账户SCOTT中的一张雇员表,首先,我们来看看emp表的数据 其中,empno是员工编号,同时也是该表的主键,ename是员工姓名,sal是员工工资,deptno是员工部门。 如何找出每个部门的最高工资的员工信息呢? 常用的方法是关联查询,SQL语句如下: 结果如下: 下面
阅读全文
摘要:1. 利用LAG OVER抑制结果集中的重复值原始结果如下:SQL> select deptno,ename from emp order by deptno;DEPTNO ENAME------ ---------- 10 CLARK 10 KING 10 MILLER 2...
阅读全文