【发布时间】:2019-02-14 14:43:13
【问题描述】:
我有一张表,上面有hiredate (Date)、First Name (String) 和 Sur Name (string),如下所示:
hireDate First Name Surname
13-oct-14 Cintia Roxana Padilla Julca
28-oct-14 Conor McAteer
28-oct-14 Paolo Mesia Macher
28-oct-14 William Anthony Whelan
15-nov-14 Peter Michael Coates
13-feb-15 Natalie Conche
15-mar-15 Beatriz Vargas Huanca
01-may-15 Walter Calle Chenccnes
04-may-15 Sarah Louise Price
我在另一列中查看了hire_dates(DATE) 的频率和累积频率,如下所示:
Row hireDate Count Cumulative
1 13/10/2014 1 1
2 28/10/2014 3 4
3 15/11/2014 1 5
4 13/02/2015 1 6
5 15/03/2015 1 7
6 09/04/2015 1 8
7 15/04/2015 1 9
8 01/05/2015 1 10
查询是这样的:
WITH
Data AS (
SELECT
hireDate,
COUNT(1) AS Count
FROM
`human-resources-221122.human_resources.employees_view`
WHERE
status <> "cancelled"
GROUP BY
1 )
SELECT
hireDate,
Count,
SUM(Count) OVER (ORDER BY hireDate ASC ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW) AS Cumulative
FROM
Data
ORDER BY
hireDate ASC
但我需要在那些没有计数的地方按月份和年份查看数字,例如:
Hire_Month Hire_Year Count Cumulative
October 2014 4 4
November 2014 1 5
December 2014 0 5
January 2015 0 5
February 2015 1 6
March 2015 1 7
April 2015 2 9
May 2015 1 10
提前致谢。
【问题讨论】:
-
你试过
EXTRACT()或FORMAT_DATE()吗? -
where??,在子查询中??
-
它有效,但在那些没有计数的月份我需要零
-
如果没有日期,则没有可分组的内容。这里的策略是首先创建一个 date_array 并在分组之前将您的查询加入它。
GENERATE_DATE_ARRAY()在这里提供帮助。 -
我从来没有使用过这种功能,你能告诉我我应该怎么做吗?
标签: sql google-bigquery fill cumulative-frequency