我想为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 构建了架构,因此您可以直接在此处撰写查询。
由于
答案 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