MYSQL 查找每月有多少用户进行了交易
MYSQL Finding how many users transacted per month
我的任务是找出 2020 年每个月有多少用户进行了交易
我知道我有两个表可以使用。
Table Name: Receipts|Columns: receipt_id, collection_id, user_id, amount
Table Name: Games |Columns: game_id, collection_id, game_date_time
我试过了,但我认为它没有意义或不起作用
select month(games.game_date_time) AS Month, sum(receipts.id) from bills
join games on bills.collection_id = games.collection_id
WHERE YEAR(games.game_date_time) = 2020
group by receipts.user_id, month(games.game_date_time)
order by month(games.game_date_time)
使用 COUNT()
获取计数,而不是 SUM()
。如果你想计算用户数,而不是对同一个用户进行两次计数,请使用 COUNT(DISTINCT user_id)
,不要将 user_id
放在分组中。
SELECT MONTH(g.game_date_time) AS month, COUNT(DISTINCT r.user_id) AS users
FROM receipts AS r
JOIN games AS g ON r.collection_id = g.collection_id
WHERE YEAR(g.game_date_time) = 2020
GROUP BY month
ORDER BY month
find how many users performed a transaction in every month in 2020
SELECT COUNT(r.user_id)
FROM receipts AS r
JOIN games AS g USING (collection_id)
WHERE YEAR(g.game_date_time) = 2020
GROUP BY r.user_id
HAVING COUNT(DISTINCT MONTH(g.game_date_time)) = MONTH(CURRENT_DATE)
这个查询:
- 仅选择当年的行。
- 对于每个用户 - 计算该用户不同月份的付款金额,并与当前月份进行比较。如果用户每个月都有付款(包括当前!),则这些值相等。
- 计算符合此条件的用户数量。
PS。查询将在 2021 年失败 - 为了在未来使用时接收正确的信息
HAVING COUNT(DISTINCT MONTH(g.game_date_time)) = CASE YEAR(CURRENT_DATE)
WHEN 2020
THEN MONTH(CURRENT_DATE)
ELSE 12
END
我的任务是找出 2020 年每个月有多少用户进行了交易 我知道我有两个表可以使用。
Table Name: Receipts|Columns: receipt_id, collection_id, user_id, amount
Table Name: Games |Columns: game_id, collection_id, game_date_time
我试过了,但我认为它没有意义或不起作用
select month(games.game_date_time) AS Month, sum(receipts.id) from bills
join games on bills.collection_id = games.collection_id
WHERE YEAR(games.game_date_time) = 2020
group by receipts.user_id, month(games.game_date_time)
order by month(games.game_date_time)
使用 COUNT()
获取计数,而不是 SUM()
。如果你想计算用户数,而不是对同一个用户进行两次计数,请使用 COUNT(DISTINCT user_id)
,不要将 user_id
放在分组中。
SELECT MONTH(g.game_date_time) AS month, COUNT(DISTINCT r.user_id) AS users
FROM receipts AS r
JOIN games AS g ON r.collection_id = g.collection_id
WHERE YEAR(g.game_date_time) = 2020
GROUP BY month
ORDER BY month
find how many users performed a transaction in every month in 2020
SELECT COUNT(r.user_id)
FROM receipts AS r
JOIN games AS g USING (collection_id)
WHERE YEAR(g.game_date_time) = 2020
GROUP BY r.user_id
HAVING COUNT(DISTINCT MONTH(g.game_date_time)) = MONTH(CURRENT_DATE)
这个查询:
- 仅选择当年的行。
- 对于每个用户 - 计算该用户不同月份的付款金额,并与当前月份进行比较。如果用户每个月都有付款(包括当前!),则这些值相等。
- 计算符合此条件的用户数量。
PS。查询将在 2021 年失败 - 为了在未来使用时接收正确的信息
HAVING COUNT(DISTINCT MONTH(g.game_date_time)) = CASE YEAR(CURRENT_DATE)
WHEN 2020
THEN MONTH(CURRENT_DATE)
ELSE 12
END