2017-06-14 33 views
0

我有一個查詢,用於統計某個給定字段中某個給定字段的不同值的數量,該字段不記錄之前。它計算一週中新值的數量。在一個週期內將mysql查詢延長到多個週期

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); 

我需要擴展查詢,以便能夠在過去兩個月的所有周內進行相同的計算。

我該怎麼辦呢?

回答

1

那麼,如果我正確地理解了這一點,一個字段第一次出現在一個星期內。你想每週計算出有多少次這樣的第一次出現。所以先獲得每場的第一個日期。然後每週計數一次。

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);