zoukankan      html  css  js  c++  java
  • 教为学:Oracle SQL学习之路(四):分析函数之统计(二)

    教为学:Oracle SQL学习之路(四):分析函数之统计(二)

    前言

    关于分析函数的博文我已经写了好几篇了。

    可是一直对自己所写的东西不怎么满意,说不清楚问题具体在哪里,最大的问题就是我只是觉得不满意,却完全搞不清楚,自己不满意在哪里,该说清楚的没有说清楚?还是内容太过单薄。

    MAX和MIN一看就知道什么意思。

    SQL:

    1. select distinct manager_id,
    2.     max(salary) over(partition by manager_id ) as max_salary
    3. from employees order by manager_id;

    执行结果(节选):

    MANAGER_ID

    MAX_SALARY

    100

    17000

    101

    12008

    102

    9000

    103

    6000

    108

    9000

    114

    3100

    120

    3200

    121

    4200

    122

    3800

    123

    4000

    124

    3500

    分析统计函数行数到底是由谁决定?

    这个问题其实很大的程度上让初学者困惑,因为一般理论上,我们总觉得MAX就只有一个,为什么会有那么多?特别是在没有分组的情况下。

    我们把上面的SQL改写一下。

    1. select manager_id,
    2.     max(salary) over(partition by manager_id ) as max_salary
    3. from employees
    4. where manager_id='100'
    5. ;

    结果:

    MANAGER_ID

    MAX_SALARY

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    100

    17000

    好,我再改写一下SQL。

    1. select manager_id
    2. from employees
    3. where manager_id='100'
    4. ;

    再上结果集:

    MANAGER_ID

    100

    100

    100

    100

    100

    100

    100

    100

    100

    100

    100

    100

    100

    要不要数一数行数。

    你完全可以把分析函数看作强行加入一个SQL的外来者,这个外来者的数据必须按照规定服从原有数据。

    也就是说,它的行数是由去掉的分析函数以后的SQL决定的。

    Syntax

    MAX

    MIN

    FIRST_VALUE

    LAST_VALUE

    用法都比较简单。

    功能上,我个人认为MAX是FIRST_VALUE的一个子集。

  • 相关阅读:
    完美数据迁移-MongoDB Stream的应用
    补习系列(3)-springboot中的几种scope
    补习系列(2)-springboot mime类型处理
    hdfs directory item limit
    git-format-patch
    SPARK-18560
    hdfs OutOfMemoryError
    hdfs 路径不支持‘:’
    java.io.UTFDataFormatException: encoded string too long:
    scala-maven-plugin excludes
  • 原文地址:https://www.cnblogs.com/jiaoweixue/p/3114483.html
Copyright © 2011-2022 走看看