zoukankan      html  css  js  c++  java
  • T-SQL:qualify和window 使用(十七)

    1.qualify

    是一个潜在的额外筛选器

    主要用于对开窗函数的数据筛选

    SELECT orderid, orderdate, val,
      RANK() OVER(ORDER BY val DESC) AS rnk
    FROM Sales.OrderValues
    QUALIFY rnk <= 5;

    标准SQL没用定义qualify子句,它是Teredata特有的特性。

    2.window

    允许我们对窗口进行命名描述;然后在定义其他窗口-即将被串钩函数使用或用来定义另一个命名窗口时,代指这个命名的窗口描述。

    如下

    SELECT empid, ordermonth, qty,
      SUM(qty) OVER (PARTITION BY empid
                     ORDER BY ordermonth
                     ROWS BETWEEN UNBOUNDED PRECEDING
                              AND CURRENT ROW) AS run_sum_qty,
      AVG(qty) OVER (PARTITION BY empid
                     ORDER BY ordermonth
                     ROWS BETWEEN UNBOUNDED PRECEDING
                              AND CURRENT ROW) AS run_avg_qty,
      MIN(qty) OVER (PARTITION BY empid
                     ORDER BY ordermonth
                     ROWS BETWEEN UNBOUNDED PRECEDING
                              AND CURRENT ROW) AS run_min_qty,
      MAX(qty) OVER (PARTITION BY empid
                     ORDER BY ordermonth
                     ROWS BETWEEN UNBOUNDED PRECEDING
                              AND CURRENT ROW) AS run_max_qty
    FROM EmpOrders;

    用window缩写前置查询

    SELECT empid, ordermonth, qty,
      SUM(qty) OVER W1 AS run_sum_qty,
      AVG(qty) OVER W1 AS run_avg_qty,
      MIN(qty) OVER W1 AS run_min_qty,
      MAX(qty) OVER W1 AS run_max_qty
    FROM Sales.EmpOrders
    WINDOW W1 AS ( PARTITION BY empid
                   ORDER BY ordermonth
                   ROWS BETWEEN UNBOUNDED PRECEDING
                            AND CURRENT ROW );

    window吧一个带有分区,排序和框架选项的完整的窗口描述为w1  

  • 相关阅读:
    一句话搞定qt4 开发环境
    一句话随笔.....
    es6学习笔记(二)
    Vue学习笔记(一)
    es6学习笔记(一)
    Java中的一些基础概念
    你了解Java中String的substring函数吗?
    Ajax请求与浏览器缓存
    QCon杭州2012技术开发大会感受
    为什么选择使用Sass而不是Less?
  • 原文地址:https://www.cnblogs.com/feizianquan/p/10127532.html
Copyright © 2011-2022 走看看