簡體   English   中英

SQL-總和列,直到其他列條件為止

[英]SQL - Sum Column until Other Column Condition

我有一個包含三列的表:

employee_iddayssales

employee_id不是唯一的,因為它會重復不同的日期和銷售額組合。

我想產生一個包含三列的表:

employee_idsales - 30sales - final

哪里:

employee_id現在是唯一的,

sales - 30 =總和(銷售)(其中天數<= 30),並且

sales - final =每個ID的總和。

這是我要尋找的之前/之后的東西。 任何幫助將不勝感激!

示例圖片在下面鏈接!

圖像前

影像后

您可以為此使用conditional aggregation

select employee_id,
       sum(case when days <= 30 then sales end) as sales30,
       sum(sales) as allsales
from yourtable
group by employee_id
        Select empid , sum (sales)  as total ,
         sum (case when days <=30 then sales else 0 end ) as sales_30 
        from SALES_DATA 
         GROUP BY empid 
        Select empid , sum (sales)  as total ,
         sum (case when days <=30 then sales  
        else 0 end ) as sales_30 
        from SALES_DATA 
         GROUP BY empid 

在Oracle中,您可以嘗試此操作

WITH sale30 AS(選擇員工編號,SUM(sale)銷售WHERE日<= 30 GROUP BY employee_id),saleFinal AS(SELECT員工編號,SUM(sale)銷售額GROUP BY員工ID)SELECT sf.employee_id,s3.sale sale_30,sf.sale FROM salefinal sf,sale30 s3,sf.employee_id = s3.employee_id(+)

一般來說,您可以使用此

SELECT sf.employee_id,s3.sale sale_30,sf.sale FROM(選擇employee_id,SUM(sale)sale GROUP BY employee_id)sf,(SELECT employee_id,SUM(sale)sale WHERE day <= 30 GROUP BY employee_id)s3 WHERE SF .employee_id = s3.employee_id(+)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM