2014-07-02 117 views
0

我有以下的列的表的範圍:GROUP BY月WHERE日期

enter image description here

NETID是用戶的唯一標識符,出現的是他們已經在登錄的次數月,而EARLIEST_MONTHLY_DATE是他們登錄一個月的最早時間。我目前使用:

SELECT 
    to_char(earliest_monthly_date, 'yyyy-mm-dd') MARCH, 
    COUNT(NETID) unique_login_count 
FROM 
    REPORT_SERVICE_USAGE 
WHERE 
    earliest_monthly_date >= to_date('2014-03-01', 'yyyy-mm-dd') 
AND earliest_monthly_date <= to_date('2014-03-31', 'yyyy-mm-dd') 
GROUP BY 
    to_char(earliest_monthly_date, 'yyyy-mm-dd') 
ORDER BY 
    to_char(earliest_monthly_date, 'yyyy-mm-dd') ASC 

它給了我在一個給定的月份每天登錄的總次數。它返回是這樣的:

enter image description here

現在,我要建立我的查詢,以便它按月份而不是由某月的一天,登錄計數。我不知道如何做到這一點(或者如果可以這樣做),因爲我對SQL不是很熟悉,但任何幫助都將不勝感激。如果您需要更多信息,請隨時詢問。順便說一下,這是一個Oracle數據庫。

回答

2
SELECT 
    to_char(earliest_monthly_date, 'yyyy-mm') MARCH, 
    COUNT(NETID) unique_login_count 
FROM 
    REPORT_SERVICE_USAGE 
WHERE 
    earliest_monthly_date >= to_date('2014-03-01', 'yyyy-mm-dd') 
AND earliest_monthly_date <= to_date('2014-03-31', 'yyyy-mm-dd') 
GROUP BY 
    to_char(earliest_monthly_date, 'yyyy-mm') 
ORDER BY 
    to_char(earliest_monthly_date, 'yyyy-mm') ASC 
+0

工作很好!謝謝! – jordaniac89

1

就改變選擇和GROUP BY 'TO_CHAR' 提取

SELECT 
    extract(MONTH from earliest_monthly_date) MARCH, 
    COUNT(NETID) unique_login_count 
FROM 
    REPORT_SERVICE_USAGE 
WHERE 
    earliest_monthly_date >= to_date('2014-03-01', 'yyyy-mm-dd') 
AND earliest_monthly_date <= to_date('2014-03-31', 'yyyy-mm-dd') 
GROUP BY 
    extract(MONTH from earliest_monthly_date) 
ORDER BY 
    extract(MONTH from earliest_monthly_date) ASC 

編輯

如果你喜歡羣體通過月份和年份從@Lamak答案一個更好的選擇。

+0

我希望我能給你兩個最好的答案,但他確實讓事情好一點。我需要一年,因爲跨度是2013 - 2014年,所以我需要能夠區分。感謝您的幫助! – jordaniac89

+0

@ jordaniac89沒問題!我在這裏只是爲了幫助不累積點:) –