选读SQL经典实例笔记01_检索和排序

news/2024/7/9 20:49:02 标签: sql, 数据库, mysql, postgresql

 

1. 在WHERE子句中引用别名列

1.1. 当表里的某些列没有被恰当命名的时候,这个技巧尤其有用

sql">1.2. sql

select sal as salary, comm as commission
  from emp
 where salary < 5000

1.3. 内嵌视图

sql">1.3.1.  sql

select *
   from (
 select sal as salary, comm as commission
   from emp
        ) x
  where salary < 5000

1.3.2. 聚合函数

1.3.3. 标量子查询

1.3.4. 窗口函数

1.3.5. 别名

2. CONCAT函数

2.1. 串联多列的值

sql-中,oror是concat函数的快捷方式">2.2. 在DB2、Oracle和PostgreSQL 中,“||”是CONCAT函数的快捷方式

sql-server中则为">2.3. 在SQL Server中则为“+”

3. 随机返回若干行记录

3.1. 如果ORDER BY子句使用数值常量,那么就需要按照SELECT列表里的顺序来排序

3.2. 如果ORDER BY子句使用了函数,那么就需要按照该函数的返回值来排序,而函数返回的值是根据结果集里的每一行计算而来的

sql">3.3. MySQL

sql">3.3.1.  sql

  select ename,job
 from emp
  order by rand() limit 5

sql">3.4. PostgreSQL

sql">3.4.1.  sql

 select ename,job
   from emp
  order by random() limit 5

3.5. Oracle

sql">3.5.1.  sql

 select *
   from (
  select ename, job
    from emp
   order by dbms_random.value()
        )
   where rownum <= 5

sql-server">3.6. SQL Server

sql">3.6.1.  sql

select top 5 ename,job
   from emp
  order by newid()

4. 把Null值转换为实际值

4.1. COALESCE函数

sql">4.1.1.  sql

select coalesce(comm,0)
   from emp

4.1.2. 更方便、更简洁

4.2. CASE

sql">4.2.1. sql

 select case
       when comm is not null then comm
       else 0
       end
  from emp

数据库">4.3. 适用于所有的数据库

5. 依据子串排序

5.1. 按照职位字段的最后两个字符对检索结果进行排序

sql、oracle和postgresql">5.2. DB2、MySQL、Oracle和PostgreSQL

sql">5.2.1. sql

select ename,job
  from emp
 order by substr(job,length(job)-2)

sql-server">5.3. SQL Server

sql">5.3.1. sql

select ename,job
  from emp
 order by substring(job,len(job)-2,2)

6. 排序时对Null值的处理

数据库得添加一个辅助列">6.1. Oracle能够让你在无须修改非Null值数据的情况下方便地把Null值排到最前面或者最后面,其他数据库得添加一个辅助列

6.1.1. Oracle 9i及后续版本NULLS FIRST和NULLS LAST来决定Null值应该排到前面还是后面

6.2. 辅助列

6.2.1. 只存在于查询语句里,而不存在于表中

6.2.2. 目的是让你能够识别出Null值,并控制其排在最前面还是最后面

6.3. 对于非Oracle解决方案的查询语句,其内嵌视图X会返回如下结果集

sql">6.4. sql

select ename,sal,comm,
       case when comm is null then 0 else 1 end as is_null
  from emp

7.  依据条件逻辑动态调整排序项

7.1. 如果JOB等于SALESMAN,就要按照COMM来排序;否则,按照SAL排序

sql">7.2.  sql

select ename,sal,job,comm
   from emp
  order by case when job = 'SALESMAN' then comm else sal end

sql">7.3. sql

select ename,sal,job,comm,
       case when job = 'SALESMAN' then comm else sal end as ordered
 from emp
order by 5

http://www.niftyadmin.cn/n/1008176.html

相关文章

Eclipse中有用的快捷键

Eclipse中有的快捷键自己记不清楚,但用起来又很方便,遇到了就放在这边备忘。 【CtrlO】快速定位某个类中的属性、方法 有时候,一个类中的属性、方法比较多,想用快捷键快速查找,提升效率。 举例:我想查找…

linux查看目前C/C++ 版本号

gcc -E -dM - </dev/null | grep "STDC_VERSION"如果没查到&#xff0c;则默认是c89的标准&#xff1b;其他&#xff1a; C99: #define STDC_VERSION 199901LC11: #define STDC_VERSION 201112LC 98&#xff1a;__cplusplus: 199711LC 11&#xff1a;__cpluspl…

一个水表有停用/启用:计算当月真正使用的天数

引言 水表是用于测量水消耗量的设备&#xff0c;对于水费计算非常重要。然而&#xff0c;在某些情况下&#xff0c;水表可能会被停用或重新启动&#xff0c;这对计算当月真正使用的天数带来了一些挑战。本文将探讨如何处理这种情况&#xff0c;以便准确计算水费。 背景 当水…

HBase(12):Java编程

1 需求与数据集 某某自来水公司,需要存储大量的缴费明细数据。以下截取了缴费明细的一部分内容。 用户id 姓名 用户地址 性别 缴费时间 表示数(本次) 表示数(上次)

python数据结构学习

1&#xff0c;列表 列表是python的一种可以更改数据内容的数据类型&#xff0c;它是由一系列的元素组成的序列。在其他的语言中&#xff0c;相似的功能称为数组&#xff0c;但是python的列表功能可以存储相同的数据类型外&#xff0c;还可以保存为不用的数据类型&#xff0c;这…

hive基于新浪微博的日志数据分析——项目及源码

有需要本项目的全套资源资源以及部署服务可以私信博主&#xff01;&#xff01;&#xff01; 本系统旨在对新浪微博日志进行大数据分析&#xff0c;探究用户行为、内容传播、移动设备等多个方面的特征和趋势&#xff0c;为企业和个人的营销策略、产品设计、用户服务等提供有益的…

GO web开发

go web开发 简介 go官方提供了http服务&#xff0c;但它的功能很简单。 这里介绍web开发中的一些问题&#xff0c;和web框架&#xff08;echo&#xff09;怎么解决这些问题 &#xff0c;对于具体的echo的使用&#xff0c;可看官网 官网&#xff1a; https://echo.labstack…

Java基础---有了基本类型为什么还需要包装类

目录 缘由 基本类型和包装类型的区别 如何理解自动拆装箱 哪些地方会自动拆装箱 自动拆装箱与缓存 缘由 Java中有8种基本数据类型&#xff0c;这些基本类型又都有对应的包装类 因为Java是一种面向对象语言&#xff0c;很多地方都需要使用对象而不是基本数据类型比如&…