gpt4 book ai didi

MySQL每个用户的选择计数(如果大于3)

转载 作者:行者123 更新时间:2023-11-29 21:13:19 26 4
gpt4 key购买 nike

我有以下MySQL表(真实的表实际上非常巨大,大约有200万行):

----------------------------
userId | artistId | trackId
----------------------------
user1 | artist1 | track1
-------|----------|--------
user1 | artist1 | track1
-------|----------|--------
user1 | artist1 | track1
-------|----------|--------
user2 | artist1 | track1
-------|----------|--------
user2 | artist2 | track2
-------|----------|--------
user2 | artist2 | track2
-------|----------|--------
.... | .... | ....

我想要的是:对于每个用户,选择用户听过超过 3 首不同轨道的艺术家(即同一艺术家的 3 首轨道)。这是因为我需要将此选择视为用户对艺术家的偏好,因此,例如,如果用户只听了某个艺术家的一两首轨道,我不想将其视为“偏好/喜欢”。

这是我编写的查询,但我不确定这是否正确:

select p.userId, p.artistId, p.trackId 
from lastfm_part2 p
join
(select userId, artistId, trackId
from lastfm_part2
group by userId, artistId, trackId
having count(trackId) > 3) as m
on m.userId = p.userId and m.artistId = p.artistId and p.trackID = m.trackId
PS。我需要返回所有行,即使它们可能看起来是重复的(同一用户、同一轨道、同一艺术家),但实际上它们与不同的时间戳相关。这个查询正确吗?

最佳答案

我在 Oracle 中测试了它,所以 MySQL 可能有点不同,但下一个查询确实对我有用。

SELECT p.userId, p.artistId, COUNT( DISTINCT p.trackId )
FROM lastfm_part2
group by userId, artistId
having count( DISTINCT p.trackId ) > 3;

关于MySQL每个用户的选择计数(如果大于3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com