`

sum()over()

 
阅读更多
所用数据:
SELECT a.deptno, a.employename, a.salary
  FROM t_salary a

000001         李可                              1000
000001         李强                              2000
000001         杨彦军                            4000
000002         童家道                            3000
000002         姜文                              3000
000002         罗文                              3000
000003         窨嫡                              3000
000003         童家道                            3000
000003         童家道                            3000
000004         于名                              4000

使用代码:

SELECT A.deptno, A.employename,A.salary, 
--1 按照名称进行分区,同时按照名称进行合计 
SUM(A.salary)OVER(PARTITION BY A.employename) AS SUM_INC_ONLY,
--2 按照名称进行累计 
SUM(A.salary)OVER(ORDER BY A.employename) AS SUM_INC,
--3   和 1 效果相同 
SUM(A.salary)OVER(PARTITION BY A.employename ORDER BY A.employename) AS SUM_INC_NAME,
--4 按照部门分组,部门内进行合计。名称相同时进行累计 
SUM(A.salary)OVER(PARTITION BY A.deptno ORDER BY A.employename) AS SUM_INC_DEP,
--5 按照部门,名称分组,部门名称相同时进行合计 
SUM(A.salary)OVER(PARTITION BY A.deptno,A.employename ) AS SUM_INC_DEP_NAM
FROM t_salary A


所得结果:
DEPTNO     EMPLOYENAME     SALARY     SUM_INC_ONLY     SUM_INC     SUM_INC_NAME     SUM_INC_DEP     SUM_INC_DEP_NAM
000002     姜文    3000    3000    3000    3000    3000    3000
000001     李可    1000    1000    4000    1000    1000    1000
000001     李强    2000    2000    6000    2000    3000    2000
000002     罗文    3000    3000    9000    3000    6000    3000
000002     童家道    3000    9000    18000    9000    9000    3000
000003     童家道    3000    9000    18000    9000    6000    6000
000003     童家道    3000    9000    18000    9000    6000    6000
000001     杨彦军    4000    4000    22000    4000    7000    4000
000004     于名    4000    4000    26000    4000    4000    4000
000003     窨嫡    3000    3000    29000    3000    9000    3000


分享到:
评论

相关推荐

    Oracle中的SUM用法讲解

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的SQL功能,包括聚合函数SUM。SUM函数用于对指定列的数据进行求和,常用于统计分析。在Oracle中,SUM函数可以结合CASE WHEN语句,使得条件求和变得...

    人工智能-深度学习-注意力-基于attention的LSTM/Dense implemented by Keras

    h is a weighted sum over H: 加权和 h = sigma(j = 0 to n-1) alpha(j) * H(j) weight alpha[i, j] for each hj is computed as follows: H = [h1,h2,...,hn] M = tanh(H) alhpa = softmax(w.transpose * M) h# =...

    复杂SQL语言进阶教程:从基础到高级查询构建技巧

    以及窗口函数(如ROW_NUMBER、RANK、DENSE_RANK、SUM OVER、LAG、LEAD)的应用技巧。最后通过一个综合示例,展示了如何使用这些知识点构建复杂的SQL查询。 适合人群:具备基础SQL知识并希望深入学习复杂SQL查询和...

    ORACLE分析函数.pdf

    移动增加(如SUM OVER (ORDER BY ... ROWS BETWEEN ... AND ...))可以计算连续行的累加值,而移动平均数则是对指定窗口内的平均值进行计算。 5. RATIO_TO_REPORT 这个函数返回当前行值占总和的比例,可以用于快速...

    Oracle row_number()over

    sum(sal) over (partition by deptno order by deptno desc, sal desc) dept_sum, sum(sal) over (order by deptno desc, sal desc) sum from emp; ``` 这个示例中,我们使用 row_number()over 函数来生成一个部门...

    SQL语言艺术 PDF电纸书

    5. 分区与窗口函数:高级查询技术,如ROW_NUMBER、RANK、DENSE_RANK以及LAG、LEAD、SUM OVER等,用于处理动态排名和累积计算。 6. 视图与存储过程:创建和使用视图简化复杂查询,编写存储过程封装常用操作,提高代码...

    Orcal中over函数.doc

    - **连续求和**:`SUM(sal) OVER (ORDER BY ename)`表示按照`ename`对薪资进行连续累加,即对于每个员工,其连续求和值是前面所有员工薪资的累积总和。 - **总和**:`SUM(sal) OVER ()`表示计算整个表中所有员工薪资...

    ORACLE分析函数

    根据提供的文件信息,我们可以深入探讨Oracle分析函数的相关知识点,特别是`SUM()`函数配合`OVER`子句的不同用法,以及`RANK()`, `DENSE_RANK()`, 和 `ROW_NUMBER()` 这三个窗口函数的应用场景。 ### Oracle分析...

    复杂SQL查询语句的使用

    窗口函数提供了一种在数据集上进行计算的新方法,比如计算每组的排名(RANK)、计算移动平均(LEAD/LAG)或计算累积和(SUM OVER)等。这在分析和报告中非常有用。 8. **带有条件的运算符(CASE WHEN)** CASE ...

    dw中SUM函数的使用.zip_SUM_dw_sum dw_sum函数

    4. **窗口函数结合**:在某些高级应用中,SUM函数可以与窗口函数(如OVER子句)结合,实现行级别的累计求和或移动平均: ```sql SELECT product_id, date, SUM(sales) OVER (PARTITION BY product_id ORDER BY ...

    英语六级考试完形填空必须掌握的重要短语

    - All these small costs can amount to a significant sum over time. - His contributions to the team don’t amount to much. #### 5. answer for - **含义**:对某事承担责任。 - **例句**: - I will ...

    四级高频词汇

    - **例句**:All the small savings will amount to a significant sum over time. 以上词汇和短语在英语四级考试中非常重要,熟练掌握它们对于提升语言运用能力非常有帮助。建议考生们多加练习,并尝试在不同语境...

    over函数的使用

    SUM(salary) OVER(ORDER BY salary ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) AS running_total FROM employees; ``` - **SUM(salary) OVER()**计算当前行及其前后共5行的薪资总和。 - **ROWS BETWEEN 2 ...

    ORACLE_OVER函数

    SUM(amount) OVER (PARTITION BY product_id ORDER BY sale_date) AS cumulative_sales FROM sales; ``` 这个查询将按产品ID分组,然后按销售日期对销售额进行累积求和。 ##### 示例3:使用RANK()计算员工工资...

    timeseries-util

    use function over series平均,最后 x 分钟/小时/天的总和 Use TimeSeriesBucket of bucksize of x Mins/Hours/Days with elementSize of 5 sec(data definition)alternatively, can use Function avg, sum over a...

    oracle分析函数row_number() over()使用

    这里,`SUM(sal) OVER (PARTITION BY deptno)`计算每个部门的总薪水,而`SUM(sal) OVER (PARTITION BY deptno ORDER BY ename)`则在每个部门内按照员工姓名排序并累加薪水。 此外,我们还可以通过改变`ORDER BY`...

    MySQL对window函数执行sum函数可能出现的一个Bug

    SUM(s_score) OVER w AS sum_v, MAX(s_score) OVER w AS max_v, MIN(s_score) OVER w AS min_v, COUNT(s_id) OVER w AS count_v, ROW_NUMBER() OVER w AS row_id, RANK() OVER w AS rank_id, DENSE_RANK() ...

    Oracle开发的over函数

    在这个示例中,我们使用了SUM函数结合OVER子句来计算每个部门的总薪水。可以看到,通过PARTITION BY DEPT_NO,我们可以为每个部门单独计算总薪水,而不是整个表的总薪水。 #### 三、分析函数OVER解析 1. **分析...

    Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数(转载)

    SELECT aa, SUM(aa) OVER (ORDER BY aa ROWS BETWEEN 2 PRECEDING AND 4 FOLLOWING) AS sum_aa FROM ( SELECT 1 AS aa UNION ALL SELECT 2 UNION ALL SELECT 2 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ...

Global site tag (gtag.js) - Google Analytics