2011-03-30 109 views
0

我有一個表的列:NAME,CHANGE_ID和CHANGE_DATE,其中每一行構成一個單一的變化,列表明誰做了更改(名稱),製作時間戳(時間戳)和更改的ID(整數)。結合兩個MySQL計數查詢

我可以檢索與下面的查詢由那些已經做出了最變化(上個月)分類名稱的列表:

SELECT 
    NAME AS name, 
    COUNT(DISTINCT CHANGE_ID) AS changes 
FROM 
    CHANGE_TABLE 
WHERE 
    DATE(CHANGE_DATE) > DATE(now() - INTERVAL 1 MONTH) 
GROUP BY 
    name 
ORDER BY 
    changes DESC 

而且我可以檢索每月所做的更改列表在過去的10個月以下查詢:

SELECT 
    DATE_FORMAT(CHANGE_DATE, '%Y-%m') AS date, 
    COUNT(DISTINCT CHANGE_ID) AS change_count 
FROM 
    CHANGE_TABLE 
WHERE 
    CHANGE_DATE > curdate() - INTERVAL 10 MONTH 
GROUP BY 
    date 

我要的是一個查詢,將返回這些查詢的綜合信息:我想上面的變化,製造商的名稱和他們有多少的變化做出各自過去10個月的月份。只要數據在那裏,我不會特別在意結果表的外觀。我扼殺了我的大腦,但是我對SQL的理解並不足以解決問題。任何幫助,將不勝感激。

回答

1

您是否嘗試過上進行分組的日期和名字,是這樣的:

SELECT 
    DATE_FORMAT(CHANGE_DATE, '%Y-%m') AS date, 
    COUNT(DISTINCT CHANGE_ID) AS change_count, 
    NAME 
FROM 
    CHANGE_TABLE, (SELECT 
     NAME AS name, 
     COUNT(DISTINCT CHANGE_ID) AS changes 
    FROM CHANGE_TABLE 
    WHERE DATE(CHANGE_DATE) > DATE(now() - INTERVAL 1 MONTH) 
    GROUP BY name 
    ORDER BY changes DESC 
) subq 
WHERE CHANGE_DATE > curdate() - INTERVAL 10 MONTH AND change_table.name = subq.name 
GROUP BY date, name 
+0

我上漲了'ORDER BY日期DESC,CHANGE_COUNT DESC',這讓我幾乎我需要什麼。我感謝您的幫助。 – Yottagray 2011-03-30 18:23:19

+0

好吧,我撒謊。我真的需要它通過日期DESC進行排序,然後我需要按照他們在我上面的問題中的第一個查詢的結果中顯示的順序排列名稱......有什麼想法? – Yottagray 2011-03-30 19:38:02