1

我正在使用元数据库生成有关多个指标的客户端报告。我有 SQL 的初学者知识,但 GUI 有助于构建除少数之外的大多数查询。

我有两张桌子

  1. 用户表,包括用户注册时间和用户 ID 的时间戳
  2. 包括用户 ID 的购买表(见用户表)

我需要什么:表格显示了当月购买的累计新用户(当月注册)。

我假设加入两个表,然后在检查注册日期时计算按天分组的不同 id 应该可以解决这个问题,但我对实际查询的外观有一个非常粗略的想法。

我认为这里已经回答了一部分问题 -累积不同计数

但是我不知道如何检查注册日期。任何帮助表示赞赏。


用户表列 ID、电子邮件、时间戳(时间戳记录入职日期)

购买表列 ID、用户 ID、用户电子邮件、产品 ID、时间戳(这里的时间戳是购买时间)

编辑 感谢到目前为止的评论,我已经能够在当月的每一天进行购买时获得新的用户 ID。现在我需要将这些 ID 的累积总和放在一行,所以在时间段结束时,我知道添加了多少新用户。

这是我当前的代码

SELECT count(DISTINCT p.`user_id`) Users_Activated, date(p.`timestamp`) Day
FROM `purchase` p
INNER JOIN `user` u ON u.`id` = p.`user_id`
WHERE date(u.`timestamp`) BETWEEN {{date1}}
   AND {{date2}} AND date(p.`timestamp`) BETWEEN {{date3}} AND {{date4}}
GROUP BY date(p.`timestamp`)
ORDER BY date(p.`timestamp`) ASC
4

2 回答 2

1

不知道你的桌子的完整结构,我会尽力而为。

SELECT u.*                    -- This will give you all info on all users
FROM users u
INNER JOIN purchases p
    ON p.userID = u.ID
WHERE u.registrationDate BETWEEN NOW() - INTERVAL 30 DAY AND NOW()

鉴于可用的信息有限,我认为这会起作用。时间间隔位可能有点不同,但可能不会。

于 2018-02-26T21:55:56.410 回答
0

怎么样

SELECT DISTINCT u.id, u.whatever
FROM user_table u INNER JOIN purchase_table p
ON (u.id = p.userid) 
WHERE u.signup >= DATE_FORMAT(NOW() ,'%Y-%m-01')

这应该为您提供当前日历月的已购买的注册。

于 2018-02-26T22:03:14.743 回答