zoukankan      html  css  js  c++  java
  • 记录的排列顺序——两个ORDER BY

    因为使用窗口函数时必须要在OVER 子句中使用ORDER BY,所以可能有朋友乍一看会觉得结果中的记录不会按照该ORDER BY 指定的顺序进行排序。

    其实OVER 子句中的ORDER BY 只是用来决定窗口函数按照什么样的顺序进行计算的,对结果的排列顺序并没有影响

    真正需要对结果排序,需要在SELECT语句的最后,使用ORDER BY子句进行指定。

    这样在一条SELECT 语句中使用两次ORDER BY。

    SELECT product_name, product_type, sale_price,RANK () OVER (ORDER BY sale_price) AS ranking

    FROM Product
    ORDER BY ranking;

    尽管这两个ORDER BY 看上去是相同的,但其实它们的功能却完全不同。

    将聚合函数作为窗口函数使用时,会以当前记录为基准来决定汇总对象的记录。

    PS:有些DBMS 也可以按照窗口函数的ORDER BY 子句所指定的顺序对结果进行排序。

  • 相关阅读:
    树状数组和线段树
    N皇后问题(函数式编程与过程式)
    单例模式
    BitSet
    蓄水池抽样问题
    关于动态规划的一些感想
    53最大子序和
    5最长回文子串
    139单词拆分
    91.解码方法
  • 原文地址:https://www.cnblogs.com/philipchan/p/14338797.html
Copyright © 2011-2022 走看看