0

这就是我所拥有的...

SELECT COUNT(DISTINCT customer_number)
FROM   leads
WHERE  ( dealer_id = '75'
          OR dealer_id = '76'
          OR dealer_id = '77'
          OR dealer_id = '78'
          OR dealer_id = '70'
          OR dealer_id = '2692'
          OR dealer_id = '2693' )
       AND date BETWEEN '2013-04-01' AND '2013-04-06'
       AND customer_number NOT IN (SELECT customer_number
                                   FROM   leads
                                   WHERE  date < '2013-04-01')  

我基本上只需要进行选择计数,其中 customer_number 仅在日期范围之间计数一次,而且 customer_number 不在表的其余部分中。

上面的查询只返回零。

4

3 回答 3

1

或许...

 SELECT COUNT(DISTINCT customer_number)
   FROM leads
   LEFT 
   JOIN leads xleads
     ON xleads.customer_number = leads.customer_number
    AND xleads.date < '2013-04-01'
  WHERE leads.dealer_id IN(75,76,77,78,70,2692,2693)
    AND leads.date BETWEEN '2013-04-01' AND '2013-04-06'
    AND xleads.customer_number IS NULL;
于 2013-06-24T15:29:30.873 回答
0

我相信你想要SELECT COUNT(DISTINCT customer_number)

试试这个查询

SELECT COUNT(DISTINCT customer_number)
FROM   leads
WHERE  ( dealer_id = '75'
          OR dealer_id = '76'
          OR dealer_id = '77'
          OR dealer_id = '78'
          OR dealer_id = '70'
          OR dealer_id = '2692'
          OR dealer_id = '2693' )
  AND date BETWEEN '2013-04-01' AND '2013-04-06'
  AND customer_number NOT IN (SELECT customer_number
                                     FROM   leads
                                    WHERE  date < '2013-04-01')  

编辑让我们更仔细地整理您的规范。

首先,排除在任何经销商处拥有陈旧线索的所有客户。“陈旧”是指在四月初之前。

其次,将在 4 月 1 日第一秒至 4 月 6 日第一秒之间产生潜在客户的特定经销商列表中的所有客户包括在内。date请注意,如果您的列实际上是时间戳,则这几乎不包括 4 月 6 日的所有时间。

最后计算唯一客户。这似乎需要在特定经销商的特定日期范围内看到所有新客户。

您将如何解决此问题?分别运行这两组标准怎么样?

  SELECT customer_number
    FROM leads
   WHERE customer_number NOT IN (SELECT customer_number
                                     FROM   leads
                                    WHERE  date < '2013-04-01' )

您是否获得了您想要的客户列表(要包括的客户)?

接下来试试这个

SELECT customer_number
FROM   leads
WHERE  ( dealer_id = '75'
          OR dealer_id = '76'
          OR dealer_id = '77'
          OR dealer_id = '78'
          OR dealer_id = '70'
          OR dealer_id = '2692'
          OR dealer_id = '2693' )
  AND date BETWEEN '2013-04-01' AND '2013-04-06'

或者,对于性能和准确的日期时间匹配更好,这:

SELECT customer_number
FROM   leads
WHERE  dealer_id IN ( '75','76', '77', '78','70','2692','2693' )
  AND date >= '2013-04-01' 
  AND date < '2013-04-06'+ INTERVAL 1 DAY

检查这些结果。你可能会发现你的问题。

于 2013-06-24T15:19:36.083 回答
0

试试这个:

选择计数(不同的客户编号)

于 2013-06-24T15:21:19.760 回答