zoukankan      html  css  js  c++  java
  • oracleI基础入门附(2)算总合百分比,算累积总合百分比 Crazy

    算总合百分比
    要用 SQL 算出总合百分比,我们需要用到算排名和累积总计的概念,以及运用子查询的做
    法。在这里,我们把子查询放在外部查询的 SELECT 子句中。让我们来看以下的例子:
    Total_Sales 表格
    Name          Sales
    John            10
    Jennifer       15
    Stella          20
    Sophia        40
    Greg           50
    Jeff             20
    要算出总合百分比,我们键入:
    SELECT a1.Name, a1.Sales, a1.Sales/(SELECT SUM(Sales) FROM Total_Sales) Pct_To_Total
    FROM Total_Sales a1, Total_Sales a2
    WHERE a1.Sales <= a2.sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
    GROUP BY a1.Name, a1.Sales
    ORDER BY a1.Sales DESC, a1.Name DESC;
    结果:
    Name         Sales            Pct_To_Total
    Greg          50                  0.3226
    Sophia       40                  0.2581
    Stella        20                   0.1290
    Jeff           20                   0.1290
    Jennifer    15                   0.0968
    John         10                   0.0645
    "SELECT SUM(Sales) FROM Total_Sales" 这一段子查询是用来算出总合。总合算出后,我
    们就能够将每一行一一除以总合来求出每一行的总合百分比。
    算累积总合百分比
    要用 SQL 累积总合百分比算出,我们运用类似总合百分比的概念。两者的不同处在于在这
    个情况下,我们要算出到目前为止的累积总合是所有总合的百分之几,而不是光看每一笔资
    料是所有总合的百分之几。让我们来看看以下的例子:
    Total_Sales 表格
    Name                   Sales
    John                     10
    Jennifer                15
    Stella                    20
    Sophia                   40
    Greg                     50
    Jeff                       20
    要算出累积总合百分比,我们键入:
    SELECT a1.Name, a1.Sales, SUM(a2.Sales)/(SELECT SUM(Sales) FROM Total_Sales)
    Pct_To_Total
    FROM Total_Sales a1, Total_Sales a2
    WHERE a1.Sales <= a2.sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
    GROUP BY a1.Name, a1.Sales
    ORDER BY a1.Sales DESC, a1.Name DESC;
    结果:
    Name                  Sales                Pct_To_Total
    Greg                    50                   0.3226
    Sophia                 40                    0.5806
    Stella                   20                   0.7097
    Jeff                      20                   0.8387
    Jennifer                15                  0.9355
    John                      10                 1.0000
    "SELECT SUM(Sales) FROM Total_Sales" 这一段子查询是用来算出总合。我们接下来用累
    积总计 "SUM(a2.Sales)" 除以总合来求出每一行的累积总合百分比。

  • 相关阅读:
    用遗传算法解决子集和问题
    XML映射配置文件
    generator插件配置方式使用
    声明
    spring IOC简单分析
    模板模式
    原型模式
    委派模式,策略模式
    单例模式2
    单例模式
  • 原文地址:https://www.cnblogs.com/flyscan/p/2545988.html
Copyright © 2011-2022 走看看