Time Can';无法正确检索上一季度的上一次不同计数
我使用一个查询来检索不同的计数公司和产品,如下所示。 我无法检索通过的整个期间(本例中为第1季度)的不同计数: 如果我用e DATEADD生成最后一个季度(“季度”、-1“期间”),我就有了QTD。你知道我该怎么处理吗 预期结果: 时期 国家 一刻钟 上季度 单位 公司 第1季度公司 2020-01-01 00:00:00.000 判定元件 2020-01-01 00:00:00.000 2019-01-10 00:00:00.000 2. 2. 0 2020-01-02 00:00:00.000 判定元件 2020-01-01 00:00:00.000 2019-01-10 00:00:00.000 1. 3. 0 2020-01-03 00:00:00.000 判定元件 2020-01-01 00:00:00.000 2019-01-10 00:00:00.000 4. 6. 0 2020-01-04 00:00:00.000 判定元件 2020-01-04 00:00:00.000 2020-01-01 00:00:00.000 3. 3. 6. 2020-01-05 00:00:00.000 判定元件 2020-01-04 00:00:00.000 2020-01-01 00:00:00.000 1. 4. 6. 2020-01-06 00:00:00.000 判定元件 2020-01-04 00:00:00.000 2020-01-01 00:00:00.000 1. 4. 6. 2020-01-07 00:00:00.000 判定元件 2020-01-07 00:00:00.000 2020-01-04 00:00:00.000 2. 2. 4. 2020-01-08 00:00:00.000 判定元件 2020-01-07 00:00:00.000 2020-01-04 00:00:00.000 2. 4. 4. 2020-01-09 00:00:00.000 判定元件 2020-01-07 00:00:00.000 2020-01-04 00:00:00.000 2. 5. 4. 2020-01-10 00:00:00.000 判定元件 2020-01-10 00:00:00.000 2020-01-07 00:00:00.000 2. 2. 5. 2020-01-12 00:00:00.000 判定元件 2020-01-10 00:00:00.000 2020-01-07 00:00:00.000 1. 2. 5.Time Can';无法正确检索上一季度的上一次不同计数,time,snowflake-cloud-data-platform,Time,Snowflake Cloud Data Platform,我使用一个查询来检索不同的计数公司和产品,如下所示。 我无法检索通过的整个期间(本例中为第1季度)的不同计数: 如果我用e DATEADD生成最后一个季度(“季度”、-1“期间”),我就有了QTD。你知道我该怎么处理吗 预期结果: 时期 国家 一刻钟 上季度 单位 公司 第1季度公司 2020-01-01 00:00:00.000 判定元件 2020-01-01 00:00:00.000 2019-01-10 00:00:00.000 2. 2. 0 2020-01-02 00:00:00.00
您好-您不必通读您的代码并试图理解逻辑,请您用文字解释一下company_Q和company_q1代表什么以及如何计算它们?Hello@NickW,
CompanyQ=distinct count company**quarty to date**
表示如果您有一个期间,您将计算实际季度开始和当前季度期间之间的所有不同公司。company_Q1意味着,我希望上一季度所有公司的计数都不同。
CREATE OR REPLACE TEMPORARY TABLE "TMP_TEST" (
"Period" TIMESTAMP,
"Country" VARCHAR,
"Quarter" TIMESTAMP,
"Last Quarter" TIMESTAMP,
"Company" VARCHAR
);
INSERT INTO "TMP_TEST"
VALUES
('01/01/2020','DE ','01/01/2020 ','01/10/2019 ','WKDM2 '),
('01/01/2020','DE ','01/01/2020 ','01/10/2019 ','2GFSDG37 '),
('01/02/2020','DE ','01/01/2020 ','01/10/2019 ','ORD56 '),
('01/03/2020','DE ','01/01/2020 ','01/10/2019 ','GFDS '),
('01/03/2020','DE ','01/01/2020 ','01/10/2019 ','24GFDSGF2 '),
('01/03/2020','DE ','01/01/2020 ','01/10/2019 ','2GFSDG37 '),
('01/03/2020','DE ','01/01/2020 ','01/10/2019 ','24GSFD1 '),
('01/04/2020','DE ','01/04/2020 ','01/01/2020 ','2GFSDG37 '),
('01/04/2020','DE ','01/04/2020 ','01/01/2020 ','23GSFDG5 '),
('01/04/2020','DE ','01/04/2020 ','01/01/2020 ','24GSFD1 '),
('01/05/2020','DE ','01/04/2020 ','01/01/2020 ','23GSDF6 '),
('01/06/2020','DE ','01/04/2020 ','01/01/2020 ','24GSFD1 '),
('01/07/2020','DE ','01/07/2020 ','01/04/2020 ','GFDS '),
('01/07/2020','DE ','01/07/2020 ','01/04/2020 ','24GFDSGF2 '),
('01/08/2020','DE ','01/07/2020 ','01/04/2020 ','2GFSDG37 '),
('01/08/2020','DE ','01/07/2020 ','01/04/2020 ','24GSFD1 '),
('01/09/2020','DE ','01/07/2020 ','01/04/2020 ','2GFSDG37 '),
('01/09/2020','DE ','01/07/2020 ','01/04/2020 ','23GSFDG5 '),
('01/10/2020','DE ','01/10/2020 ','01/07/2020 ','24GSFD1 '),
('01/10/2020','DE ','01/10/2020 ','01/07/2020 ','23GSDF6 '),
('01/12/2020','DE ','01/10/2020 ','01/07/2020 ','24GSFD1 ');
SELECT "Period"
,"Country"
,"Quarter"
,"Last Quarter"
,COUNT(DISTINCT("Company")) AS "Company"
,MAX("Company_sq") as "company_Q"
,MAX("Company_sy") as "company_q1"
FROM (
SELECT *
,sum(iff(rq_c=1, 1,0)) OVER (PARTITION BY "Country","Quarter" order by "Period" rows between unbounded preceding and current row) as "Company_sq"
,sum(iff(ry_c=1, 1,0)) OVER (PARTITION BY "Country","Quarter","Last Quarter" order by "Period" rows between unbounded preceding and current row) as "Company_sy"
FROM (
SELECT *
,ROW_NUMBER() OVER(PARTITION BY "Country","Quarter","Company" order by "Period" ) as rq_c
,ROW_NUMBER() OVER(PARTITION BY "Country","Last Quarter","Company" order by "Period" ) as ry_c
FROM TMP_TEST
)
)
GROUP BY 1,2,3,4
ORDER BY "Period";