您好,再次感谢您调查这个问题。
我有一张供访客使用的 mysql 表。他们可以将自己喜欢的歌手添加到列表中。所以表格看起来很简单:
user_artist_favorites
id
user_id
artistName
假设 Moonwalker 有 4 位最喜欢的歌手:
1. Michael Jackson
2. Elvis Presley
3. Ray Charles
4. Stevie Wonder
用户Tester也得到了4位最喜欢的歌手:
1. Michael Jackson
2. Ray Charles
3. Stevie Wonder
4. Lady Gaga (sorry folks)
我现在想做的是比较这两个用户并输出如下内容:Moonwalker 和 Tester 的音乐品味有 75% 相同。
如何开始?谁能指出我正确的方向?
在此先感谢您提供的任何帮助。
最佳答案
Select T1.user_id
, Count( T2.user_id ) / Count( T1.user_id ) * 100.0 As PercentMatch
From user_artist_favorites As T1
Left Join user_artist_favorites As T2
On T2.artistname = T1.artistname
And T2.user_id = 'Tester'
Where T1.user_id = 'Moonwalker'
Group By T1.user_id
Union All
Select T1.user_id
, Count( T2.user_id ) / Count( T1.user_id ) * 100.0
From user_artist_favorites As T1
Left Join user_artist_favorites As T2
On T2.artistname = T1.artistname
And T2.user_id = 'Moonwalker'
Where T1.user_id = 'Tester'
Group By T1.user_id
Union All 查询的第一部分返回 Tester 与 Moonwalker 相似的百分比。第二个查询返回 Moonwalker 与 Tester 相似的百分比。
关于php - 比较字段并获取百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5175345/