我想将2018年每月的新订阅数与每月结束订阅数进行比较,并将其合并到一张表中。
以x轴表示2018年的月份(例如1月,2月,依此类推),以y轴作为第一行,我的第一个sql查询=该月中已用完的订阅数。第二行是我的第二个sql查询=该月新订阅的数量。我下面的“查询”以2018年3月为例。
SELECT
COUNT (UserId)
FROM
UserInAppPurchase
WHERE
ValidTo > '2018-03-01' AND ValidTo < '2018-03-31'
GROUP BY
UserId
SELECT COUNT(UserId)
FROM UserInAppPurchase
WHERE PurchaseDate > '2018-03-01'
AND PurchaseDate < '2018-03-31'
GROUP BY UserId
非常感谢您的帮助
答案 0 :(得分:1)
如果要计算用户ID,则不应按用户ID分组
SELECT COUNT (UserId), 'valid_to'
FROM UserInAppPurchase WHERE ValidTo>'2018-03-01' and ValidTo<'2018-03-31'
union all
SELECT COUNT (UserId), 'PurchaseDate'
FROM UserInAppPurchase WHERE PurchaseDate>'2018-03-01' and PurchaseDate<'2018-03-31'
答案 1 :(得分:1)
如果我理解正确,上述查询将在一个月内返回多行,这将取决于下订单的唯一身份用户总数。然后对于每个月,每个用户都是两个垂直行业,该图将是3D图,我认为这里不是这种情况。 因此,我可以想到2种情况,
您希望每个月的每月订阅总数过期
SELECT MONTH(ValidTo) ExpireMonth, COUNT(UserId) ExpireCount
FROM UserInAppPurchase
WHERE YEAR(ValidTo) = 2018
GROUP BY MONTH(ValidTo);
您想知道至少一个订阅已过期的用户数量
WITH UniqueUsers AS
(
SELECT DISTINCT MONTH(ValidTo) ExpireMonth, UserId
FROM UserInAppPurchase
WHERE YEAR(ValidTo) = 2018
)
SELECT ExpireMonth, COUNT(UserId) UserCount
FROM UniqueUsers
GROUP BY ExpireMonth;
类似的查询也将用于购买的订阅。
请让我知道您的要求是否有所不同。