精华内容
下载资源
问答
  • SQL的聚合与排序

    2017-09-17 15:33:59
    所谓聚合,就是将多行汇总为一。用于合计的函数称为聚合函数,在SQL中有很用于合计的函数,常用的有以下五种: count:计算表的记录数。 SUM:计算表中数值列的数据合计值。 AVG:计算表中数值列的数据平均值...

    所谓聚合,就是将多行汇总为一行。用于合计的函数称为聚合函数,在SQL中有很多用于合计的函数,常用的有以下五种:

    count:计算表的记录数。

    SUM:计算表中数值列的数据合计值。

    AVG:计算表中数值列的数据平均值。

    MAX:计算表中任意列中数据的最大值。

    MIN:计算表中任意列中数据的最小值。

    说明:①聚合函数会对NULL以外的对象进行合计,但是count函数例外。使用count(*)可以查出包含NULL在内的全部数据行数。

                ②MAX、MIN函数几乎适用于所有数据类型的列。SUM、AVG函数只适用于数值类型的列。

                ③关于AVG函数。如果表中A列有8条记录,其中2条NULL列,那么AVG(A)的结果等同于SUM(A)/ 6


    对表进行分组

    使用GROUP BY子句可将表中的数据进行分割。聚合函数和GROUP BY子句可以将表分割后在进行聚合。

    聚合键中包含NULL时,在结果中会以空(NULL)的形式表现出来。

    使用聚合函数和GROUP BY子句需要注意以下几点

    ①只能写在select子句中

    ②GROUP BY子句中不能使用select子句中列的别名

    ③GROUP BY子句中聚合结果是无序的

    ④where子句中不能使用聚合函数

    ⑤select子句中,除了聚合键外,其他的列都必须出现在GROUP BY子句中


    为聚合结果指定条件

    having子句可以对聚合结果指定条件

    使用having子句时,select语句的执行顺序是:

    from→where→group by→having→select

    需要注意的是,having子句必须写在group by子句之后


    使用order by子句对查询结果进行排序,ASC:升序,DESC:降序。

    order by子句可以指定多个排序键。

    order by子句中可以使用select子句中列的别名。

    order by子句可以使用select子句中未出现的列,或者聚合函数。

    order by子句中不能使用列的编号。

    展开全文
  • 多列排序: 函数: 单行字符函数 :一次性操作一 字符函数 数值函数 日期函数 转换函数 通用函数 字符函数: lower upper initcap ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210316180132878.png) 双...

    查询和单行函数:

    范围查询:
    数字/日期
    betteen 小 and 大

    SELECT * FROM EMP WHERE SAL BETWEEN 6000 AND 10000;

    模糊查询:

    LIKE :

    配合通配符使用:_ :一个字符 %:任意字符

    SELECT * FROM EMP WHERE EMPNO LIKE '7%';


    如果有null 结果为空

    排序:
    :null默认是最大值

    SELECT EMPNO,ENAME,SAL,COMM FROM EMP ORDER BY 1 ASC;


    把null排序放在最后语法:

    SELECT EMPNO,ENAME,SAL,COMM FROM EMP ORDER BY COMM DESC NULLS LAST;

    多列排序:
    函数:

    单行字符函数
    :一次性操作一行



    字符函数 数值函数 日期函数 转换函数 通用函数
    字符函数: lower upper initcap

    SELECT 'HELlo wOrLd' 一,LOWER('HELlo wOrLd') 二,UPPER('HELlo wOrLd')三,INITCAP('HELlo wOrLd') FROM DUAL;


    双行函数:一次操作多行 多行变一行
    Substr(str begin len):从1开始数

    SELECT SUBSTR('HELLO WORLD',3,3) FROM DUAL;


    Length字符数/lengthb字节数
    英文/数字
    如果中文/符号:

    utf-8编码格式下L一个汉字/符号 占三个字节

    gbk:一个汉子/符号 占两个字节

    SELECT LENGTH('HELLOWORLD') ,LENGTHB('HELLOWORLD') FROM DUAL;


    查看当前编码格式:

    SELECT * FROM NLS_DATABASE_PARAMETERS;


    Instr        

    SELECT INSTR('helloworld','ll') FROM DUAL;


    ipad/rpad:填充


    SELECT LPAD('hello',10,'*')左,RPAD('hello',10,'*') FROM DUAL;


    Trim:去掉任意空格

    SELECT TRIM('    hello world      ') FROM DUAL;
    
    SELECT TRIM ('X' FROM 'XXXXXXhello worldXXXXXX') FROM DUAL;


    替换:replace

    SELECT REPLACE('你个垃圾','垃圾','**') FROM DUAL;


    数字函数
    数值函数:
    Round(数字,n位数) 四舍五入,保留n为小数

    SELECT ROUND(67.183,2)一,ROUND(67.183,1)二,ROUND(67.183,0)三,ROUND(67.183,-1)四,ROUND(67.183,-2) FROM DUAL;


    Trunc(数字,n位数)舍尾,取整

    SELECT TRUNC(67.183,2)一,TRUNC(67.183,1)二,TRUNC(67.183,0)三,TRUNC(67.183,-1)四,TRUNC(67.183,-2) FROM DUAL;



    Mod求余

    SELECT MOD(123,5) FROM DUAL;



    日期函数
    Sysdate 当前日期
    SYSTIMESTAMP 函数:精确到微秒

    SELECT SYSTIMESTAMP FROM DUAL;



    格式化:日期》字符
    to_char(日期,格式)

    SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;


    日期+-数字(默认是天)
    日期-日期
    计算员工工龄:入职日期 天 星期 月 年

    SELECT ENAME,HIREDATE,(SYSDATE-HIREDATE),(SYSDATE-HIREDATE)/7,(SYSDATE-HIREDATE)/30,(SYSDATE-HIREDATE)/365 FROM EMP;


    Months_between(日期1,日期2)


    add_months(日期,月数)

    SELECT ADD_MONTHS(SYSDATE,12) FROM DUAL;


    当前最大是第几天 last_day

    SELECT LAST_DAY(SYSDATE) FROM DUAL;


    下一个星期n是哪天 next_day

    SELECT NEXT_DAY(SYSDATE,'星期六') FROM DUAL;



    对年 月四舍五入

    SELECT ROUND(SYSDATE,'MONTH'),ROUND(SYSDATE,'YEAR') FROM DUAL;


    EXTRACT(time)函数:返回指定 time 时间当中的年、月、日、分等日期部分。

    SELECT EXTRACT(YEAR FROM TIMESTAMP '2021-3-16 19:53:44') AS YEAR,
            EXTRACT(MONTH FROM TIMESTAMP '2021-3-16 19:53:44') AS MONTH,
            EXTRACT(DAY FROM TIMESTAMP '2021-3-16 19:53:44') AS DAY,
             EXTRACT(HOUR FROM TIMESTAMP '2021-3-16 19:53:44') AS HOUR,
            EXTRACT(MINUTE FROM TIMESTAMP '2021-3-16 19:53:44') AS MINUTE,
            EXTRACT(SECOND FROM TIMESTAMP '2021-3-16 19:53:44') AS SECOND
        FROM DUAL;

    第三章单行函数和多表查询



    3.1 SQL函数
    SQL函数可以完成如下功能:
    执行数据计算。
    修改单个数据项。
    格式化显示的日期和数字。
    进行数据类型转换。
    根据行分组操纵输出。
     SQL函数分类关系图:

    3.2字符.数字函数

    Concat函数:
    CONCAT(string1,string2)函数用于将两个字符串连接在一起

    SELECT CONCAT('Oraol','.com') FROM DUAL;
    SELECT CONCAT('A','B') FROM DUAL;


    CONCAT函数将只允许您将两个值连接在一起。如果需要连接多个值,那么我们可以嵌套多个CONCAT函数调用。

    SELECT CONCAT(CONCAT('A','B'),'C') FROM DUAL;


    CONCAT函数向结果字符串添加单引号


    Oracle || 运算符

     

    string1 || string2 [ || string_n ]


    ||运算符将多个字段连接在一起时,连接空格字符。

    SELECT 'Dave' || ' ' || 'Anderson' FROM dual;
     -- Result: 'Dave Anderson'
    


    连接单引号:

    SELECT 'LET '' S' || '--LEARN ORACLE' FROM DUAL;


    Oracle数值型函数

     

    ​
    1.ABS(x) 求数值x的绝对值
    2.COS(x)求数值x的余弦
    3.ACOS(x)求数值x的反余弦
    4.CEIL(x)求大于或等于数值x的最小值
    5.FLOOR(x)求小于或等于数值x的最大值
    6.Log(x,y)求x为底y的对数
    7.Mod(x,y)求x除以y的余数
    8.Power(x,y)求x的y次幂
    9.Sqrt(x)求x的平方根
    
    ​


    3.3转换函数


    SQL语言提供了三种函数,实现从一种数据类型数据转换到另一种类型,它们分别是TO_CHAR、TO_NUMBER和TO_DATE。
    数字转换为字符格式元素:

    9    数字宽度(9的个数决定显示宽度)    2468
    0    显示前导0    099999
    $    美元符号    $999999
    L    本地货币符号    L9999
    .    指定小数点位置    999999.99
    ,    指定逗号位置    999,999
    MI    将负数右边显示负号    -2468
    PR    将负数加上括号    9999PR
    EEEE    科学计数法    99.99999EEEE
    V    乘n个10,n由V后 9 的个数决定    999999V99


    Oracle聚合函数
     

    count    取得记录数
    sum    求和
    Avg    取平均
    Max    取最大的数
    min    取最小的数


    取得所有的员工数

    SELECT COUNT(*) FROM EMP;

     

    当一行数据所有字段全部为空的场合,count 方法有效 !
    Distinct 可以去除重复的纪录。
     comm 字段有 null 值,无法计算,sum 会忽略掉,正确的做法是将 comm 字段转换成 0。

    SELECT SUM(SAL+NVL(COMM,0)) FROM EMP;

    取得最晚入职得员工

    SELECT MAX(TO_CHAR(SYSDATE,'YYYY-MM-DD')) FROM EMP;


    Convert函数


    可以将字符串从一个字符集转换为另一个字符集


    字符集

    字符集    描述
    US7ASCII    美国 7 位 ASCII 字符集
    WE8DEC    西欧 8 位字符集
    WE8HP    惠普西欧 Laserjet 8 位字符集
    F7DEC    DEC 法语 7 位字符集
    WE8EBCDIC500    IBM 西欧 EBCDIC 代码第 500 页
    WE8PC850    IBM PC 代码第 850 页
    WE8ISO8859P1    ISO 8859-1 西欧 8 位字符集


    函数使用示列:

    SELECT CONVERT('A B C D E F G H I','US7ASCII','WE8ISO8859P1') FROM DUAL;

     

    Dump函数


    可以返回一个 varchar2 值,这个值包含了数据类型代码、字节长度和表达式的内部表示形式
    Dump()函数的使用示例:

    SELECT DUMP('TECH',10) FROM DUAL;
    SELECT DUMP('TECH',16) FROM DUAL;
    SELECT DUMP('TECH',1016) FROM DUAL



    Oracle行转列

     

    SELECT * FROM (数据查询集)
     PIVOT  
    (  SUM(Score/*行转列后 列的值*/) FOR  
     coursename/*需要行转列的列*/ IN (转换后列的值)
     )

    列转行_unpivot


    一行当中的列的字段按照行的唯一值转换成多行数据
    如何实现列转行:
    1.利用 union all 进行拼接,具体代码如下:

    2.利用 Oracle 自带的列转行函数 unpivot

     

    分析函数


    它可以对数据进行分组,然后分析统计,最后返回这个统计值
    Oracle 分析函数不同于分组统计(group by),group by 只能按照分组字段返回一个固定的统计值,但是不能在原来的数据行上带上这个统计值,而 Oracle 分析函数正是 Oracle 专门解决这类统计需求所开发出来的函数。
    Oracle 分析函数都会带上一个开窗函数 over()

    1、Analysis_function:指定分析函数名,常用的分析函数有 sum、max、first_value、last_value、rank、row_number 等等。
    2、over():开窗函数名,partition by 指定进行数据分组的字段,order by 指定进行排序的字段,windos 指定数据窗口(即指定分析函数要操作的行数)
    需求:在原始数据上附带上每门课的最高成绩和最低成绩。
    代码如下:

    select c.stuname,
           b.coursename,
           t.score,
           --获取组中成绩最大值
           max(t.score) over(partition by t.courseid) as score_max,
           --获取组中成绩最小值
           min(t.score) over(partition by t.courseid) as score_min,
           --分组窗口的第一个值 (指定窗口为组中第一行到末尾行)
           first_value(t.score) over(partition by t.courseid 
           order by t.score desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as score_first,
           --分组窗口的最后一个值(指定窗口为组中第一行到末尾行)
           last_value(t.score) over(partition by t.courseid 
           order by t.score desc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as score_last,
            
           --分组窗口的第一个值 (不指定窗口)
           first_value(t.score) over(partition by t.courseid order by t.score desc ) as score_first_1,
           --分组窗口的最后一个值(不指定窗口)
           last_value(t.score) over(partition by t.courseid order by t.score desc ) as score_last_1
             
      from STUDENT.SCORE t, student.course b, student.stuinfo c
     where t.courseid = b.courseid
       and t.stuid = c.stuid


    结果如下:

    我们经常会利用 row_number 函数的排名机制(排名的唯一性)来过滤重复数据


    内连接,外连接,自连接,层次连接



    1.交叉连接

    SELECT * FROM EMP , DEPT;
    1.交叉连接(笛卡尔积);所有情况的组合,不推荐使用

    3.内连接:多张表通过相同字段进行匹配,只显示匹配成功的;
    A:

    SELECT * FROM EMP E,DEPT D WHERE E.DEPTNO = D.DEPTNO;

    B:

    SELECT * FROM EMP E
    INNER JOIN DEPT D ON
    E.DEPTNO = D.DEPTNO;

    不等值连接:【一般不用】

    SELECT * FROM EMP E,DEPT D WHERE E.DEPTNO != D.DEPTNO;


    外连接:
    左外连接:以左表为基准【左表数据全部显示】,去匹配右表数据,如果匹配成功 则全部显示;如果不成功,显示部分【无数据部分 用NULL填充】
    右外连接:
    全外连接:

    展开全文
  • 多行文本拼接成一.cmd 娱乐进度条.cmd 定时关机.cmd 宽带小助手.txt 对含有数字的文件进行改名操作.cmd 将cwindows.复制到当前目录并显示进度.bat 帮你删除.bat 建立回收站.cmd 弹出光驱.bat 快速设置...
  • 把有六百多个单元格的一列,变成一页的多列 将N列变M列公式归纳为 一列变四列 四列变一列 重复四次填充 多行数据排成一列 将单元格一列分为多列 首写字母大写 把单元格编号中的小写字母变成大写字母 让姓名左右对齐 ...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    把有六百多个单元格的一列,变成一页的多列 将N列变M列公式归纳为 一列变四列 四列变一列 重复四次填充 多行数据排成一列 将单元格一列分为多列 首写字母大写 把单元格编号中的小写字母变成大写字母 让姓名左右对齐 ...
  • 3.导入图片到多行多列:在工作表中批量导入图片,且显示为多行多列,具体列数可以自定义,图片的高度也可以自定义。 4.导入图片到合并区域:批量导入图片和图片名称到工作表中,存放图片名称的单元格允许是合并...
  • 百宝箱4.0简体2003

    2008-09-24 15:15:30
    支持多行单列及多行多列。 建立底端标题 EXCEL顶端标题的延伸。可以使1至6底端插入到每页页尾。 按颜色筛选 将区域按颜色进行筛选,先选中一个单元格再点本工具,其它颜色隐藏。 建立带圈编号 弥补EXCEL 仅仅...
  • 2009达内SQL学习笔记

    2010-02-10 19:46:58
    如果想在上进行排序,必须对每个指定DESC关键字。 升序是默认的,可不写,但降序必须写。 六、WHERE子句,选择、过滤 其后只能跟逻辑语句,返回值只有ture或false 如: select last_name,salary from s...
  • 多列约束:每个约束约束多列数据 MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 1、 not null约束 非空约束用于确保当前列的值不为空值,非空约束只能出现在表...
  • 技巧92 多行多列数据转为单列数据 技巧93 单列数据转为多行多列数据 技巧94 数据区域的复杂转换 第11章 排序 技巧95 包含标题的数据表排序 技巧96 无标题的数据表排序 技巧97 以当前选定区域排序 技巧...
  • 8.3.2 GROUP BY子句根据多列组合  8.3.3 ROLLUP运算符和CUBE运算符  8.3.4 GROUP BY子句中的NULL值处理  8.3.5 HAVING子句  8.3.6 HAVING子句与WHERE子句  8.3.7 SELECT语句各查询子句总结  第9章 ...
  • Excel新增工具集

    2011-12-20 09:30:27
    3、个工作表中相同位置的()集中到同一表:本工作簿中有若干格式相同的表,为了便于观察各表相同位置数据的变化,可以首先用鼠标选定要观察的区域,然后执行本命令,则各工作表的同位置区域数据集中排列到同一...
  • 精通SQL--结构化查询语言详解

    千次下载 热门讨论 2011-12-11 16:35:41
    8.3.2 group by子句根据多列组合 150 8.3.3 rollup运算符和cube运算符 151 8.3.4 group by子句中的null值处理 153 8.3.5 having子句 153 8.3.6 having子句与where子句 154 8.3.7 select语句各查询子句总结 ...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    04047引用输入了公式或值的最后一单元格(多列情况之二) 04048引用输入了任何内容的最后一列单元格(单行情况之一) 04049引用输入了公式或值的最后一列单元格(单行情况之二) 04050引用输入了任何内容的最后一...
  • 066招 快速插入连续的多行/多列 067招 对多行/列数据进行移动 068招 设置/列最合适的行高/列宽 069招 将联系电话分列为“区号”和“号码” 2.6 批注与超链接的应用技巧 070招 在值为0的单元格中 ……
  • 066招 快速插入连续的多行/多列 067招 对多行/列数据进行移动 068招 设置/列最合适的行高/列宽 069招 将联系电话分列为“区号”和“号码” 2.6 批注与超链接的应用技巧 070招 在值为0的单元格中 ……
  • 【转置选区值】 将选中存储格区域内容自动识别转置为列与列转置为,支持多行多列相互转置并且能保留转置前的多样格式。 【数字符分离】 将存储格的内容按需求进行字符分离与表达式计算。(1-只保留数字. 2-只...
  • 可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号。 函数名称:颜色求和 函数功能与参数:按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域。 函数名称:颜色计数 函数功能与...
  • 可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号。 函数名称:颜色求和 函数功能与参数:按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域。 函数名称:颜色计数 函数功能与...
  • 83. 快速隐藏/显示选中单元格所在(微软OFFICE技巧大赛获奖作品) 47 84. 彻底隐藏单元格 48 85. 用下拉列表快速输入数据 48 86. 快速输入自定义短语 49 87. 设置单元格背景色 50 88. 快速在个单元格中输入...
  • 83. 快速隐藏/显示选中单元格所在(微软OFFICE技巧大赛获奖作品) 47 84. 彻底隐藏单元格 48 85. 用下拉列表快速输入数据 48 86. 快速输入自定义短语 49 87. 设置单元格背景色 50 88. 快速在个单元格中输入...
  • Excel技巧大全

    2015-05-06 07:21:37
    39. 快速隐藏/显示选中单元格所在(微软Office技巧大赛获奖作品) 24 40. 彻底隐藏单元格 25 41. 用下拉列表快速输入数据 25 42. 快速输入自定义短语 25 43. 设置单元格背景色 25 44. 快速在个单元格中输入...
  • Excel新手完全教程

    2014-10-08 23:13:58
    83. 快速隐藏/显示选中单元格所在(微软OFFICE技巧大赛获奖作品) 35 84. 彻底隐藏单元格 36 85. 用下拉列表快速输入数据 36 86. 快速输入自定义短语 37 87. 设置单元格背景色 37 88. 快速在个单元格中输入...
  • Excel百宝箱9.0无限制破解版

    热门讨论 2012-02-03 19:05:29
    【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表...
  • Excel百宝箱

    2012-10-27 17:09:21
    【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表...
  • Excel百宝箱8.0

    2011-06-07 21:32:17
    可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号。 函数名称:颜色求和 函数功能与参数:按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域。 函数名称:颜色计数 函数功能与...
  • 可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号 颜色求和按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域 颜色计数按背景颜色计算区域中同背景之数据个数。第一参数为参照值。...
  • Excel使用技巧大全

    2011-09-13 23:38:39
    39. 快速隐藏/显示选中单元格所在(微软OFFICE技巧大赛获奖作品) 30 40. 彻底隐藏单元格 30 41. 用下拉列表快速输入数据 31 42. 快速输入自定义短语 31 43. 设置单元格背景色 31 44. 快速在个单元格中输入...
  • 39. 快速隐藏/显示选中单元格所在(微软OFFICE技巧大赛获奖作品) 24 40. 彻底隐藏单元格 25 41. 用下拉列表快速输入数据 25 42. 快速输入自定义短语 25 43. 设置单元格背景色 25 44. 快速在个单元格中输入...

空空如也

空空如也

1 2 3 4 5 6
收藏数 107
精华内容 42
关键字:

多列多行数值行排序