将mysql查询从一个周期扩展到多个周期
我有一个查询,它统计给定字段在给定的一周内的不同值的数量,而以前没有。它统计本周新值的数量将mysql查询从一个周期扩展到多个周期,mysql,sql,Mysql,Sql,我有一个查询,它统计给定字段在给定的一周内的不同值的数量,而以前没有。它统计本周新值的数量 SELECT COUNT(DISTINCT (field)) FROM table WHERE (creation BETWEEN CURDATE() - INTERVAL DAYOFWEEK(CURDATE()) + 5 DAY AND CURDATE() - INTERVAL DAYOFWEEK(CURDATE()) - 2 DAY) AND field NO
SELECT
COUNT(DISTINCT (field))
FROM
table
WHERE
(creation BETWEEN CURDATE() - INTERVAL DAYOFWEEK(CURDATE()) + 5 DAY AND CURDATE() - INTERVAL DAYOFWEEK(CURDATE()) - 2 DAY)
AND field NOT IN (SELECT DISTINCT
(field)
FROM
table
WHERE
creation < CURDATE() - INTERVAL DAYOFWEEK(CURDATE()) + 5 DAY);
我需要扩展查询,以便能够在过去两个月的所有周内进行相同的计算
我该怎么做呢?好吧,如果我理解正确,一个字段在某个星期内第一次出现。您希望每周统计此类首次出现的次数。因此,首先获取每个字段的第一个日期。然后每周数一次
select
yearweek(first_occurence),
count(*)
from
(
select field, min(creation) as first_occurence
from table
group by field
) fields
group by yearweek(first_occurence)
order by yearweek(first_occurence);