GROUP BY月选择日期Teradata SQL助手

时间:2018-02-22 16:06:13

标签: sql teradata

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

但这会返回错误。每月检索用户ID,广告和展示总数的最有效代码是什么。

2 个答案:

答案 0 :(得分:0)

用户聚合对我来说没有意义,因为它们是你想要计算的东西。尝试按月份和年份进行分组:

 var myDiv = {<div>
                   <h1>Hello World</h1>
              </div>}

请注意,我更改了对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); 的限制,以排除任何超过2017年的年份。

答案 1 :(得分:0)

如果您希望将此值包含在当前查询中,则应使用分析函数。例如&#34;每个月中唯一身份用户的总数&#34;会是这样的:

select count(distinct user_id) over(partition by EXTRACT(MONTH FROM datum))

请注意,每个用户都会重复这些值。