仅计算给定日期的新记录数(如果它们是新记录)

Posted

技术标签:

【中文标题】仅计算给定日期的新记录数(如果它们是新记录)【英文标题】:Count the number of new records for a given date only if they are new 【发布时间】:2012-03-08 13:28:45 【问题描述】:

仅当记录日期是记录所有者的最小(日期)时,我才尝试计算给定日期的新记录数。这是我要运行的查询:

SELECT COUNT(*) 
  FROM user_total_spends 
 WHERE user_id IN (SELECT user_id 
                     FROM user_total_spends 
                    WHERE MIN(DATE(date_posted)) = '2012-02-07')
   AND merchant_location_id = '4f39b201-4a50-40ff-9cdf-cec51506eaf2' 
   AND date_posted = '2012-02-07'; 

基本上我想说的是,如果这是第一次遇到此用户/商家,则将其视为此商家的新用户。

当我运行它时,我得到一个Invalid use of group function 错误。我错过了什么?

【问题讨论】:

代替WHERE min(date(date_posted)) = '2012-02-07'试试HAVING min(date(date_posted)) = '2012-02-07' 发布解决方案,以便我将其标记为答案。效果很好! 【参考方案1】:

您必须使用HAVING 来过滤一组记录或聚合函数的条件,所以不要使用WHERE min(date(date_posted)) = '2012-02-07' 尝试HAVING min(date(date_posted)) = '2012-02-07'

【讨论】:

【参考方案2】:

试试下面:

 SELECT count(*) FROM user_total_spends 
    WHERE user_id IN (SELECT user_id FROM user_total_spends GROUP BY user_id HAVING min(date(date_posted)) = '2012-02-07')
    AND merchant_location_id = '4f39b201-4a50-40ff-9cdf-cec51506eaf2' AND 
    date_posted = '2012-02-07'; 

【讨论】:

@J Cooper:注意。谢谢...现在更正

以上是关于仅计算给定日期的新记录数(如果它们是新记录)的主要内容,如果未能解决你的问题,请参考以下文章

根据上次更新日期计算记录数 + null

查询单个日期,按标准计算值

在Django中按日期计算记录数

记录数正确显示,但当日期是相当旧的日期时,“新计算开始日期”列显示所有“######”格式,例如:01-DEC-1184

如何计算几个日期之间的记录数

仅汇总访问中最近日期的参数