我试图获取我网站的点击/用户数量,为此我有他们的 cookie ID 和日期。但从我到目前为止编写的查询中,我收到以下错误
表格
cookieid date
--------------------
001 2011-03-17
001 2011-03-17
002 2011-03-17
001 2011-03-17
001 2011-03-20
002 2011-03-21
114 2011-03-21
114 2011-03-21
计数应指示的准确方式是:
on 2011-03-17 => 4 clicks / 2 unique visitors
on 2011-03-20 => 1 click / 1 unique visitor
on 2011-03-21 => 3 clicks / 2 unique visitors
如果我确实喜欢下面的查询
"INSERT INTO visitos SELECT cookieid,date FROM ",@tab," GROUP BY cookieid"
这通过正确计数给出了正确的点击/用户计数,但它忽略了日期,根据上表,它会告诉您 2011-03-17 => 4 次点击/2 名唯一访问者,但它忽略了点击/访问20 号,并且没有给出 20 号的计数。因为 cookie id 重复
用另一种方式
"INSERT INTO visitos SELECT cookieid,date FROM ",@tab," GROUP BY date"
它将给出所有点击/访问的日期,但计数结果是错误的, 它将告诉 2011-03-17 => 4 次点击/4 名唯一访问者,通过将每次点击作为唯一用户获取,同时忽略 cookie id
任何人都可以帮助我编写 SQL 查询来同时按 cookie id 和日期对其进行分组
P.S "INSERT INTO visitos SELECT cookieid,date FROM ",@tab," GROUP BY date,cookieid"
也没用
存储过程
BEGIN
SET @tab = CONCAT("monitortable_",pr);
DROP TABLE IF EXISTS uniquevisitors;
CREATE TEMPORARY TABLE uniquevisitors (`cookieid` INT, `date` DATETIME);
**SET @sqlstring = CONCAT("(PLACE WHERE GROUPING QUERY SHOULD TAKE PLACE)INSERT INTO uniquevisitors SELECT cookieid,date FROM ",@tab," GROUP BY cookieid");**
PREPARE stmt FROM @sqlstring;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
DROP TABLE IF EXISTS uniquevisitorscount;
CREATE TEMPORARY TABLE uniquevisitorscount (`cnt` INT, `dat` DATETIME);
INSERT INTO uniquevisitorscount SELECT COUNT(cookieid) AS cnt ,DATE(date) AS dat FROM uniquevisitors;
DROP TABLE IF EXISTS nonuniquevisitcount;
CREATE TEMPORARY TABLE nonuniquevisitcount (`cnt` INT, `dat` DATETIME);
SET @sqlstring = CONCAT("INSERT INTO nonuniquevisitcount SELECT COUNT(cookieid) AS cnt ,DATE(date) AS dat
FROM ",@tab," GROUP BY DATE_FORMAT(date, '%y'),DATE_FORMAT(date, '%m'),DATE_FORMAT(date, '%d')");
PREPARE stmt FROM @sqlstring;
EXECUTE stmt;
SELECT un.cnt AS ucnt, nu.cnt AS cnt, un.dat AS dat FROM uniquevisitorscount un JOIN nonuniquevisitcount nu ON un.dat = nu.dat;
END$$
最佳答案
试试这个
“插入访问日期,计数(cookie_id)no_of_clicks,计数(不同的cookie_id)no_of_visitors来自”,@tab,“按日期分组”
关于mysql - 多分组SQL,点击和用户计数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26292559/