按日期获取用户数

时间:2011-12-14 18:13:26

标签: sql teradata

我正在尝试创建一个查询,该查询将返回按日期访问某些内容的不同用户数的结果。现在我有一个显示2列的查询,第一列是日期,第二列是用户名。它将列出在特定日期访问该应用程序的所有不同用户,但每个用户都有自己的不同行。以下是执行此操作的查询:

SELECT DISTINCT logdate, User AS ReportUser
FROM table          
WHERE appname='abcd1234' AND logdate >=DATE-30

我尝试在用户周围放置COUNT(),但是它表示选定的非聚合值必须是关联组的一部分。

我知道如何才能让这个查询显示过去30天的行以及不同用户的数量?

2 个答案:

答案 0 :(得分:1)

这将是正确的方法。

SELECT logdate, Count(User) AS ReportUser
FROM table          
WHERE appname='abcd1234' AND logdate >=DATE-30
GROUP BY 1

从不在Teradata中使用DINTINCT。它总是会降低您的查询性能。请改用GROUP BY

更正 在Teradata 13中,优化程序可以根据统计信息确定哪个版本的效率更高。这可以在Teradata 13的发布摘要“Group By和DISTINCT Performance Equivalence”中找到。 - http://www.info.teradata.com/edownload.cfm?itemid=083440012(PDF)

答案 1 :(得分:0)

在WHERE子句

之后使用“GROUP BY”
SELECT logdate, COUNT (User) AS ReportUser 
FROM table           
WHERE appname='abcd1234' AND logdate >=DATE-30 
GROUP BY logdate