gpt4 book ai didi

mysql - COUNT(DISTINCT X) MySQL 查询没有给出我需要的结果

转载 作者:行者123 更新时间:2023-11-29 03:44:48 25 4
gpt4 key购买 nike

在 MySQL 中,我有一个查询来计算我想要聚合的 page_views 表中的所有浏览器。这是我的查询:

SELECT
Browser,
COUNT(*)
FROM page_views
WHERE PageID = 58
GROUP BY Browser;

例如:

Chrome            14Firefox           17Internet Explorer 9Opera             5Safari            3--------------------Total             48

This is exactly what I want. It works fine and it's fast. Now I wanted to to a distinct on the IP address to remove users that have viewed the page more than once. I added DISTINCT in the COUNT so it looks like this:

SELECT
Browser,
COUNT(DISTINCT IPAddress)
FROM page_views
WHERE PageID = 58
GROUP BY Browser;

这看起来行得通,但实际上,我认为行不通。在我的真实环境中,我在多个列上进行聚合,一个用于浏览器,一个用于星期几,一个用于一个月等......所以每个都是一个查询,但具有不同的 GROUP BY .我如何注意到它可能不是我想要的结果是我的每个查询都有不同的总数。按浏览器汇总 View 总 View 为 48,按星期几汇总 View 总 View 为 45,按月汇总 View 总 View 为 50。有什么地方不对。

此外,如果我执行一个简单的 SELECT COUNT(DISTINCT IPAddress) FROM page_views WHERE PageID = 58,我得到的页面浏览量比其他聚合查询的总页面浏览量少得多。

同样,我想要的是我在上面提出的第一个查询,但只为每个 IP 地址聚合一次,因此它基本上计算页面的唯一查看者,而不是页面的总浏览量。

为了获得我想要的结果,我在做什么或没有做正确的事情?

谢谢。

最佳答案

如果你这样做:

SELECT
Browser,
day_of_the_week,
month_of_the_year,
COUNT(DISTINCT IPAddress)
FROM page_views
WHERE PageID = 58
GROUP BY Browser, day_of_the_week,month_of_the_year

count(distinct) 的总数将与您的简单查询中的总数不同。

如果你想在同一天消除重复的 IP 地址,你需要这样的东西:

SELECT 
p1.Browser
, p1.pageID
, p1.WEEKDAY(`date`) as day_of_week
, p1.MONTH(`date`) as The_month
, COUNT(p2.Unique_visitors_this_day) as uniqueviews
FROM page_views p1
LEFT JOIN (SELECT id, 1 as Unique_visitors_this_day FROM page_views pv1
LEFT JOIN page_views pv2 ON (pv1.id > pv2.id
AND pv1.ipaddress = pv2.ipaddress
AND pv1.`date` = pv2.`date`)
WHERE pv2.id IS NULL) as p2
ON (p1.id = p2.id)
WHERE p1.PageID = 58
GROUP BY p1.Browser, p1.day_of_week, p1.The_month;

关于mysql - COUNT(DISTINCT X) MySQL 查询没有给出我需要的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7611599/

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