2016-06-09 83 views
0

所以我在BQ一個查詢,看起來這樣的:BigQuery的使用MAX()函數

SELECT 
    SubscriptionId, 
    start_time, 
STRFTIME_UTC_USEC((UTC_USEC_TO_MONTH(TIMESTAMP_TO_USEC(TIMESTAMP(start_time)))),'%B %Y') AS cohort_month, 
    UTC_USEC_TO_MONTH(start_time) AS usec_month, 
    STRFTIME_UTC_USEC((UTC_USEC_TO_WEEK(TIMESTAMP_TO_USEC(TIMESTAMP(start_time)), 0)),'%Y-%m-%d') AS cohort_week, 
    WEEK(start_time) AS usec_week, 
    DATE(start_time) AS cohort_day, 
    UTC_USEC_TO_DAY(start_time) AS usec_day, 
    amount, 
    current_period_start, 
    current_period_end, 
    cancel_date, 
    end_date, 
    cancel_at_period_end, 
    salesRepEmail, 
    CASE WHEN (salesRepEmail IS NOT NULL) THEN 'Telesales' ELSE 'Online' END AS sales_channel, 
    status, 
    type_id, 
    CASE WHEN (type_id IN ('150032', 
     '150033', 
     '150023')) THEN 'Annual' ELSE 'Monthly' END AS duration, 
    refunded 
FROM 
    [data_snapshots_daily.subs_charges_refunds_] 
WHERE 
    start_time >= '2016-04-01 00:00:00' 
    AND refunded = FALSE 

我正在尋找做雖然,是對添加到查詢,以便它返回所有相關來自最近一個月,一週和一天的數據。

所以我想它涉及MAX(usec_month),但我無法弄清楚。請記住,我只希望它返回相關的數據在最近一個月的時候它包括(6月)

回答

1

我想的東西像下面

爲當月

WHERE YEAR(CURRENT_DATE()) = YEAR(start_time) 
AND MONTH(CURRENT_DATE()) = MONTH(start_time) 

當前周

WHERE YEAR(CURRENT_DATE()) = YEAR(start_time) 
AND WEEK(CURRENT_DATE()) = WEEK(start_time) 

爲當天

WHERE CURRENT_DATE() = DATE(start_time) 

快速增加

了過去兩週的東西,如下面的播放(應提高處理今年的第一週)

WHERE (YEAR(CURRENT_DATE()) = YEAR(start_time) AND WEEK(CURRENT_DATE()) = WEEK(start_time)) 
OR CASE WHEN WEEK(CURRENT_DATE()) = 1 
     THEN (YEAR(CURRENT_DATE()) - 1 = YEAR(start_time) AND 53 = WEEK(start_time)) 
     ELSE (YEAR(CURRENT_DATE()) = YEAR(start_time) AND WEEK(CURRENT_DATE()) - 1 = WEEK(start_time)) 
    END 

擊穿上述聲明(根據您的請求)

它查找屬於當前周或前一週的開始時間。本週很簡單。在前一週的情況下,看起來本週是不是一年的第一週 - 在這種情況下,情況是 - 同一年,但前一週。如果當前一週是一年中的第一週,它會尋找上一年的上週。

清潔版本來處理last two weeks條件

DATE(start_time)>DATE(DATE_ADD(CURRENT_DATE(),-7*1-DAYOFWEEK(CURRENT_DATE()),'DAY')) 

改變7*11讓我們說3 - 給你調理last four weeks例如

+0

這是非常有益的,但我有一個後續問題。如果我還想在前一週添加,該怎麼辦?所以基本上,它會返回當前星期數據和前幾周? – wizkids121

+0

在答案中看到「快速添加」 –

+0

工作!謝謝! 雖然我仍然對CASE聲明感到困惑。你能否分解究竟發生了什麼? – wizkids121