当前位置: 首页 > 面试题库 >

每月统计新客户

雷骁
2023-03-14
问题内容

由于某种原因,我对此感到困惑。

基本上,我正在寻找一个查询,该查询将查找自2010年以来每月的新客户数量。

我有客户的电子邮件地址(email),所有下达的订单(OrderID)以及下达订单的日期(OrderDate)。该表是tblOrder。

我知道“新客户”是:(a)在日期/月份 之前 从未下过订单的人,以及(b)在日期/月份 之后 至少下过一次订单的人

我希望输出最终是这样的,用一个更简单的方法更好:

      01   02   03   04   05   06   07   08   09   10   11   12
2010  ##   ##   ##   ##   ##   ##   ##   ##   ##   ##   ##   ##
2011  ##   ##   ##   ##   ##   ##   ##   ##   ##   ##   ##   ##
2012  ##   ##   ##   ##   ##   ##   ##   ##   ##   ##   ##   ##

我得到了这份工作,但是,伙计们,我不是一个程序员,这对你们中的某些人可能看起来很简单,但它已经超出了我的脑袋,根本没有引起我的兴趣。

SELECT <customer info> 
FROM <customer table> 
WHERE (SELECT COUNT(<order info>) 
    FROM <order table> 
    WHERE <customer info> = <current customer> 
        AND <date> < <target date>) = 0 
        AND (SELECT COUNT(<order info> 
            FROM <order table> 
            WHERE <customer info> = <current customer> 
            AND <date> > <target date>) > 0

我知道这也不是有效的SQL。所以我不知道该怎么办。而且我认为这只是提取适用客户的列表(意味着在输入月份之前未下订单的客户),而不是像我最终想要的那样对它们进行总计和总计。


问题答案:

尝试:

select yr, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]
from
(select datepart(month,minDate) mth, datepart(year,minDate) yr, count(*) cnt
 from (select min(OrderDate) minDate, max(OrderDate) maxDate
       from tblOrder
       group by email) sq
 where datediff(month, minDate, maxDate) > 0
 group by datepart(month,minDate), datepart(year,minDate)) src
PIVOT
(max(cnt) 
 for mth in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]) ) pvt

SQLFiddle在这里。



 类似资料:
  • 如果做起来不太复杂,按月将它们分组也会有效。意思是... 2011年新客户 ...诸如此类。我可能更喜欢更简单的一次只显示一个月,虽然,为了我能够尝试和理解,哈哈。 null 编辑:如果它有帮助,我以前被给了这个人造代码来工作,但它超出了我的能力。/哑巴

  • 我有一个名为-'users'的示例sql表,其中包含以下记录: 我想获得每一个用户的计数在每日,每周和每月的基础上与预期的outlike为:

  • 问题内容: 我有一张表,我们称它们为桌子 我需要每月的记录并更新为table ,这是我的意思是一个示例输出: 在数据类型列IS 到目前为止,这是我尝试过的: 该查询仅在每个员工和每个月显示一次。 问题答案: 尝试以下

  • 客服统计 用户可以在客服统计中查看客服的星级分布数量和客服详情,以及客服接待的访客总数与会话总数。

  • 访客统计 可以根据访客、会话、消息三个维度,查看选定的时间范围和渠道的统计数据。

  • 问题内容: 我正在尝试为dellstore2数据库累计计算用户数。在这里和其他论坛上寻找答案时,我使用了这个 这返回 每个月是 看一下前几项,似乎总的来说还不错。但是当我跑步时 对于整个事情,我明白了 这与第一个输出11,681中的最后一项不一致。我猜上面的计算无法确定整个月的唯一性。什么是最快的计算方式(最好不使用自联接)? 问题答案: 除了直接从订单中选择之外,还可以使用如下子查询: 我认为这