【SQL实战】寻找畅销与滞销

本文介绍了如何使用SQL通过round()函数保留浮点数小数,计算畅销商品(销量=备货量-库存量),并演示了ORDER BY子句进行字段排序,包括单字段、多字段、计算结果和别名排序。此外,LIMIT关键字用于限制查询结果数量,以及如何指定排序方向和使用多层排序。
摘要由CSDN通过智能技术生成

寻找畅销与滞销

字段段的计算

1、借助 SQL 实现字段间计算的方法非常简洁,只需要把算式写在 SELECT 关键字后面

T43gbV.jpg

销量 = 备货量 - 库存量,那么,让备货量对应的字段 total 减去库存量对应的 surplus

2、在介绍源数据表时我们说过,pricetotalsurplus 这三个需要频繁参与算术运算的列,都是 浮点数 类型的,目的就是为了保证除法运算中不出错。

SELECT  event_name,
        total,
        surplus,
        surplus / total
FROM    stocks;

SQL 中的运算要怎样保留小数呢?给你介绍一个快捷小工具:round() 函数

T489KI.jpg

我们把 surplus/total 这个算式写到 round() 函数的括号里,其后跟一个英文逗号 ,,逗号后面跟我们想要保留小数的位数。round(surplus/total, 2) 的含义就是对 surplus/total 的计算结果保留两位小数

SELECT  event_name,
        total,
        surplus,
        round(surplus/total, 2)
FROM    stocks;

AS关键字

我们可以用 AS 关键字给字段取别名,这里的字段可以是数据表中的单独一列,也可以是算术运算后得到的新字段。

SELECT  event_name,
        price,
        total - surplus AS sales
FROM    stocks;

T4JMNT.jpg

T4Jf58.jpg

  • 别名为关键字且不加任何标识,SQL 就无法辨认你写的到底是字段别名,还是它自己的关键字了;

  • 别名以数字开头且不加标识,那么像科学计数法表示的 10e5 究竟是数字还是字段名呢?

  • 别名中包含特殊字符,如 互联网+2021-01月收入,那这里的加号和减号到底是别名的一部分,还是 SQL 中的运算操作符呢?

ORDER BY子句

SQL 中排序靠的是 ORDER BY 子句,它可以按指定字段对查询结果进行排序——和 AS 关键字一样,这个字段可以是数据表中的某一列,也可以是数学运算的执行结果。ORDER BY 子句用法灵活,可以实现很多复杂的操作:

  • 按单个字段排序;
  • 按多个字段排序;
  • 按字段间的计算结果排序;
  • 按字段别名排序;
  • 对筛选结果的排序……

按单个字符进行排序

TTrq29.jpg

SELECT   *
FROM     stocks
ORDER BY price;

按多个字符进行排序

因其能极大地方便数据查询,多层排序在业务场景中相当常用。ORDER BY 同样支持将多个字段作为排序依据,实现多层排序。

这些字段之间要用 英文逗号 , 分隔,并按照 外层排序依据 → 内层排序依据 的顺序写在 ORDER BY 之后。

SELECT   * 
FROM     stocks 
ORDER BY event_type, price;

按字段间的计算结果排序

SELECT     *
FROM       stocks
ORDER BY   total - surplus;

按字段别名排序

-- 按英文别名排序
SELECT   event_name,
         price,
         total - surplus    AS sales
FROM     stocks
ORDER BY sales;

-- 按中文别名排序
SELECT   event_name         AS 演出名称,
         price              AS 价格,
         total - surplus    AS 销量
FROM     stocks
ORDER BY 销量;

LIMIT关键字

在查询结果中数据量较大,而我们又只需要其中特定几行时,可以用 LIMIT 关键字来限制查询结果的数量,我们来看下它的使用手册:

HumC4I.jpg

LIMIT 关键字可以接两个参数,分别是获取结果的 起始位置 和返回结果的 行数

这两个参数指定了待获取的行号。以 LIMIT 0, 5 为例,起始位置是 0,返回结果的行数是 5,那么,从 0 开始往后数 5 个数,就得到了待获取的行号:1, 2, 3, 4, 5,最终返回了第 1~5 行数据。

LIMIT 参数最常见的应用,就是取出查询结果的前几行。SQL 为了方便我们写代码,支持将第一个参数省略,写成 LIMIT 返回结果的行数,这时 SQL 会自己帮我们将前一个参数设为 0,LIMIT 5 也就相当于 LIMIT 0, 5

除了参数之外,我们还需要注意 LIMIT 关键字所在的位置。LIMIT 关键字是等一切都尘埃落定以后才起效的,它在 SQL 语句中的位置也很靠后,要放在我们曾经学过的 WHERE 子句和 ORDER BY 子句后面。

指定排序方向

HumB26.jpg

按多个字段排序时,我们还可以给每一个字段指定不同的排序方向。比如下面的例子,对数据表 seasons_revenue 按渠道 channel 升序排序,并在每个渠道内部按营收额 revenue 降序排序:

SELECT   *
FROM     seasons_revenue
ORDER BY channel, revenue DESC;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值