对每n个和组上的SQL行求和
我的数据如下: QUARTER_CMT DEPT SALES 7 A 39 8 A 23 9 A 33 10 A 45 11 A 50 12 A 110 1 B 44 2 B 56 3 B 87 4 B 22 在建工程代码。我想将总计分组,并加入最新的对每n个和组上的SQL行求和,sql,group-by,partition,snowflake-cloud-data-platform,Sql,Group By,Partition,Snowflake Cloud Data Platform,我的数据如下: QUARTER_CMT DEPT SALES 7 A 39 8 A 23 9 A 33 10 A 45 11 A 50 12 A 110 1 B 44 2 B 56 3 B
季度\u CMT
,以便在部门中有一行:
SELECT
ROW_NUMBER() OVER(PARTITION BY DEPTORDER BY QUARTER_CMT) as RN,
QUARTER_CMT,
DEPT,
--RANK() OVER(PARTITION BY ODDZIAL ORDER BY QUARTER_COUNT) AS RowNumberRankOrg,
--NTILE(4) OVER(PARTITION BY ODDZIAL ORDER BY QUARTER_COUNT) AS RowNumberRank,
SALES
FROM TABLE_1
ORDER BY DEPT, QUARTER_CMT
挑选
(按DEPTORDER按四分之一划分)上的行数()作为RN,
四分之一,
部,
--排名()超过(按ODDZIAL顺序划分,按季度计数)为RowNumberRankOrg,
--第(4)个整数(按奇数顺序除以四分之一计数)为RowNumberRank,
出售
来自表1
按部门、季度和CMT订购
您需要将行数除以5以确定周期
SELECT MIN (QUARTER_CMT) QUARTER_CMT, DEPT, SUM(SALES) SALES, PART
FROM (
SELECT *, FLOOR(ROW_NUMBER() OVER(PARTITION BY DEPT ORDER BY QUARTER_CMT) / 5) AS PART
FROM TABLE_1
) AS T
GROUP BY DEPT, PART
ORDER BY DEPT, PART
结果:
QUARTER_CMT DEPT SALES PART
----------- ---- ----------- -----------
7 A 140 0
11 A 160 1
1 B 209 0
试试这个:
with a as (
select
row_number() over(partition by dept order by quarter_cmt)-1 n,
quarter_cmt, dept, sales
from t
order by dept, quarter_cmt
)
select min(quarter_cmt) quarter_cmt, dept, sum(sales) sales_tot
from a
group by dept, floor(n/4)
order by dept, quarter_cmt
;
假设此示例数据:
create or replace table t as
select $1 QUARTER_CMT, $2 DEPT, $3 SALES from values
(7,'A',39),
(8,'A',23),
(9,'A',33),
(10,'A',45),
(11,'A',50),
(12,'A',110),
(1,'B',44),
(2,'B',56),
(3,'B',87),
(4,'B',22)
;
你能在你这边贴上5除的确切数字吗?在《雪花》中,除法的结果对我来说很奇怪。我还将四分之一部分添加到了结果中。也许您还需要整数转换。PART
返回以下结果:0.200000,0.400000,0.600000,0.800000,1.000000,1.200000
etcit看起来需要转换为int。我对此进行了更新。我运行了嵌套代码并得到了结果:QUARTER\u CMT(7),PART(0);四分之一CMT(8),第(0)部分;第(1)部分第(9)节;第(1)部分第(10)节;第(1)部分第(11)节;季度CMT(12)第(1)部分
create or replace table t as
select $1 QUARTER_CMT, $2 DEPT, $3 SALES from values
(7,'A',39),
(8,'A',23),
(9,'A',33),
(10,'A',45),
(11,'A',50),
(12,'A',110),
(1,'B',44),
(2,'B',56),
(3,'B',87),
(4,'B',22)
;