选择日期时按月分组 Teradata SQL 助手
GROUP BY month when selecting a date Teradata SQL assistant
SELECT EVENT_DT - ((EVENT_DT -DATE'1900-01-07') MOD 7) AS dates,
CLSFD_USER_ID AS user_id,
COUNT(DISTINCT CLSFD_USER_ID) AS number_of_user_ids,
COUNT(DISTINCT CLSFD_CAS_AD_ID) AS number_of_ads,
SUM(IMPRSN_CNT) AS number_of_impressions
FROM clsfd_access_views.CLSFD_CAS_AD_HST
WHERE CLSFD_SITE_ID = 3001
AND datum >= '2017-01-01'
GROUP BY 1,2
我想知道 2017 年每个月的独立用户总数。我试过:
GROUP BY EXTRACT(MONTH FROM datum), 2
但是这returns一个错误。每月检索用户 ID、广告和印象总数的最有效代码是什么。
按用户汇总对我来说没有意义,因为他们是您要统计的。尝试单独按月和年分组:
SELECT
EXTRACT(YEAR FROM EVENT_DT) || '-' || EXTRACT(MONTH FROM EVENT_DT) AS month,
COUNT(DISTINCT CLSFD_USER_ID) AS number_of_user_ids,
COUNT(DISTINCT CLSFD_CAS_AD_ID) AS number_of_ads,
SUM(IMPRSN_CNT) AS number_of_impressions
FROM clsfd_access_views.CLSFD_CAS_AD_HST
WHERE
CLSFD_SITE_ID = 3001 AND
datum >= '2017-01-01' AND datum < '2018-01-01'
GROUP BY
EXTRACT(YEAR FROM EVENT_DT) || '-' || EXTRACT(MONTH FROM EVENT_DT);
请注意,我更改了您对 datum
的限制,以排除任何大于 2017 年的年份。
如果您希望这些值包含在当前查询中,那么您应该使用分析函数。例如 "total number of unique users during each month" 会是这样的:
select count(distinct user_id) over(partition by EXTRACT(MONTH FROM datum))
请注意,每个用户都会重复这些值。
SELECT EVENT_DT - ((EVENT_DT -DATE'1900-01-07') MOD 7) AS dates,
CLSFD_USER_ID AS user_id,
COUNT(DISTINCT CLSFD_USER_ID) AS number_of_user_ids,
COUNT(DISTINCT CLSFD_CAS_AD_ID) AS number_of_ads,
SUM(IMPRSN_CNT) AS number_of_impressions
FROM clsfd_access_views.CLSFD_CAS_AD_HST
WHERE CLSFD_SITE_ID = 3001
AND datum >= '2017-01-01'
GROUP BY 1,2
我想知道 2017 年每个月的独立用户总数。我试过:
GROUP BY EXTRACT(MONTH FROM datum), 2
但是这returns一个错误。每月检索用户 ID、广告和印象总数的最有效代码是什么。
按用户汇总对我来说没有意义,因为他们是您要统计的。尝试单独按月和年分组:
SELECT
EXTRACT(YEAR FROM EVENT_DT) || '-' || EXTRACT(MONTH FROM EVENT_DT) AS month,
COUNT(DISTINCT CLSFD_USER_ID) AS number_of_user_ids,
COUNT(DISTINCT CLSFD_CAS_AD_ID) AS number_of_ads,
SUM(IMPRSN_CNT) AS number_of_impressions
FROM clsfd_access_views.CLSFD_CAS_AD_HST
WHERE
CLSFD_SITE_ID = 3001 AND
datum >= '2017-01-01' AND datum < '2018-01-01'
GROUP BY
EXTRACT(YEAR FROM EVENT_DT) || '-' || EXTRACT(MONTH FROM EVENT_DT);
请注意,我更改了您对 datum
的限制,以排除任何大于 2017 年的年份。
如果您希望这些值包含在当前查询中,那么您应该使用分析函数。例如 "total number of unique users during each month" 会是这样的:
select count(distinct user_id) over(partition by EXTRACT(MONTH FROM datum))
请注意,每个用户都会重复这些值。