Sql 除了从查询中获取每月数据外,还可以使用什么语法获取每周数据?

Sql 除了从查询中获取每月数据外,还可以使用什么语法获取每周数据?,sql,google-bigquery,Sql,Google Bigquery,我已经编写了一个查询,它为我提供了定制订单每月比较所需的数字。我也想得到每周的数据。什么样的语法可以同时提供这两种信息 我已经写了一个完整的查询,对于月报来说效果很好,但是我被要求深入研究数据,以获得每周的数据 SELECT t.customerref_name, t.customerref_value, t.txndate AS full_date, EXTRACT(MONTH FROM CAST(t.txndate AS DATE)) AS month, EXTRACT (YEAR FR

我已经编写了一个查询,它为我提供了定制订单每月比较所需的数字。我也想得到每周的数据。什么样的语法可以同时提供这两种信息

我已经写了一个完整的查询,对于月报来说效果很好,但是我被要求深入研究数据,以获得每周的数据

 SELECT t.customerref_name, t.customerref_value, t.txndate AS full_date, 
EXTRACT(MONTH FROM CAST(t.txndate AS DATE)) AS month, EXTRACT (YEAR FROM 
t.txndate) AS year,
r.description, r.amount, r.estimate_id, r.qty, 
s.first_invoice_order_date, 
s.last_invoice_order_date, DATE_DIFF(s.last_invoice_order_date,  
s.first_invoice_order_date, DAY) AS days_been_csutomer,
NTILE(4) OVER (ORDER BY DATE_DIFF(s.last_invoice_order_date, 
s.first_invoice_order_date, DAY)) AS percentile_lifetime, r.color,
可能吗?这只是我代码的一个片段,但如果需要,我可以共享其余的部分,而不是
EXTRACT(每月从一天开始)MONTH
您可以使用
EXTRACT(每周从一天开始)WEEK

因此,如果您的每月查询可以模拟如下

#standardSQL
WITH `project.dataset.table` AS (
  SELECT day, CAST(100 * RAND() AS INT64) value
  FROM UNNEST(GENERATE_DATE_ARRAY('2000-01-01', '2001-12-31')) day
)
SELECT EXTRACT(YEAR FROM day) year, EXTRACT(MONTH FROM day) month, SUM(value) value
FROM `project.dataset.table`
GROUP BY year, month
ORDER BY year, month  
那么,你的周报将是

#standardSQL
WITH `project.dataset.table` AS (
  SELECT day, CAST(100 * RAND() AS INT64) value
  FROM UNNEST(GENERATE_DATE_ARRAY('2000-01-01', '2001-12-31')) day
)
SELECT EXTRACT(YEAR FROM day) year, EXTRACT(WEEK FROM day) week, SUM(value) value
FROM `project.dataset.table`
GROUP BY year, week
ORDER BY year, week   

除了米哈伊尔的回答之外,您还可以了解

< p>的语法,请考虑使用<代码> FrastByDATE(‘%u’,一天)作为周周NU/CODE。此方法提供了几个不同的格式元素,使您具有更大的灵活性:

%U
一年中的周数(星期日为一周的第一天)为十进制数(00-53)

%V
一年中的周数(星期一为一周的第一天)为十进制数(01-53)。如果包含1月1日的一周在新年中有四天或更多天,则为第1周;否则是上一年的第53周,下一周是第1周


%W
一年中的周数(星期一为一周的第一天)为十进制数(00-53)