gpt4 book ai didi

MySQL 多个查询合并为一个

转载 作者:行者123 更新时间:2023-11-29 05:41:49 25 4
gpt4 key购买 nike

我有一个 mysql 表,其中包含以下行:

id  |  event_type  |  occurance_date  |  ipaddress

我想获得天数、唯一访问次数和总访问次数/天。使用 2 个查询很容易做到这一点,但我只想进行一个查询。

所以我想得到我能得到的日子

SELECT DISTINCT(occurance_date) as day FROM statistics WHERE event_type = 'visit' 
ORDER BY id DESC LIMIT 14;

获得独立访问/天

SELECT COUNT(DISTINCT(ipaddress)) as unique_visits FROM statistics WHERE occurance_date = '2011-05-11';

获取所有访问/天

SELECT COUNT(id) as total_visits FROM statistics WHERE occurance_date = '2011-05-11';

问题是我如何通过 unique_visits 和 total_visits 进行单个查询来返回所有天数。

(2011-05-11应该换成日期,只是举例)

欢迎任何建议。

谢谢。

最佳答案

select count(*) as total_visits, count(distinct(s1.ipaddress)) as unique_visits 
FROM statistics s1
WHERE event_type = 'visit'
GROUP BY occurrence
ORDER BY unique_visits;

注释版:

首先我们做一个 SELECT 计数(所有行)

select count(*) as total_visits, 

加上不同 IP 地址的计数

count(distinct(s1.ipaddress)) as unique_visits 

根据统计,我添加了一个别名,但这只是出于习惯。不需要。

FROM statistics s1

请记住,您只需要具有 event_type“访问”的行。
您还需要一些相关信息,但您不想过滤掉这些信息,您只想将它​​们作为单独的项目显示在结果中。
所以我们唯一的过滤器event_type

WHERE event_type = 'visit'

我们按发生日期对结果进行分组,如果您省略这一行,您将只会看到一行。把它放回去看看区别。

GROUP BY occurrence

我们按访问次数对结果进行排序,除了我不想重写 count(distinct(s1.ipaddress)) 所以我写了别名 unique_visits ;这是允许的(甚至在 order by 子句中鼓励这样做。)

ORDER BY unique_visits;

链接:
Group by,不要管这个神话部分,只需阅读 group by 工作原理的描述:
http://dev.mysql.com/tech-resources/articles/debunking-group-by-myths.html
计数:http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html

关于MySQL 多个查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6242933/

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