每2个用户在字段b / w中查找重复值的比率。 (MySQL的)

时间:2014-07-11 13:07:09

标签: jquery mysql sql database report

我想为User_Hits在单个数据库表(MYSQL)上生成复杂的报告。这是包含样本数据的表结构。

    TABLE: User_Hits
User_ID      IP_Address
1            192.168.1.1
1            192.168.1.2
1            192.168.1.3
1            192.168.1.4
2            192.168.1.2
2            192.168.1.4
2            192.168.1.50
2            192.168.1.55
3            192.168.1.2
3            192.168.1.55
3            192.168.1.111

这是我想要的报告输出。

Percentage of duplicate IPs b/w every two Users

USER     1        2        3
  1     -       50%      25%
  2     50%       -       50%
  3     33.3%   66.6%      -

每个单元格的值基于以下示例计算:
例如,66.6%计算如下:

= (Number of IPs common b/w User 3 and User2) * 100 / (Number of IPs for User3 )
= (2 * 100) / 3
= 66.6

报告中的每个单元格都以相同的方式计算。

是否可以仅使用MYSQL查询生成此报告? 任何人都曾生成过这样的报告......请指导我,我需要SQL专家的帮助。

我已在SQL FIDDLE中为 User_Hits 构建了架构,因此您可以直接在此处撰写查询。

由于

1 个答案:

答案 0 :(得分:0)

如果这可以帮到你,请看这个

SELECT DISTINCT u3.User_ID,
    t.U2UserID,
    COUNT(u3.IP_Address) Totalcount,
    IPCount
FROM (SELECT
    u1.User_ID U1UserID,
    u2.USER_ID U2UserID,
    COUNT(u1.IP_Address) IPCount
FROM user_Hits u1
LEFT OUTER JOIN user_Hits u2

    ON u1.User_ID <> u2.USER_ID
    AND u1.Ip_Address = u2.IP_Address
GROUP BY    u1.User_ID,
        u2.USER_ID) t
INNER JOIN User_Hits u3
    ON t.U1UserID = u3.User_ID
GROUP BY    u3.User_ID,
        IPCount,
        t.U2UserID