2011-09-13 55 views
3

我在查詢一個記錄來自流行社區網站軟件的文件下載的表。下面的SQL顯示了每個用戶下載的第一個文件。SQL - 計算查詢產生的列的唯一值

SELECT 
    dfid, dtime, file_name, MIN(dmid) 
FROM 
    downloads_downloads 
JOIN downloads_files 
ON downloads_downloads.dfid = downloads_files.file_id 
GROUP BY 
    dmid 
ORDER BY 
dtime,dfid 

的數據從該查詢有成千上萬像行:

dfid dtime  file_name MIN(dmid) 
3  1308147507 abc    108 
455  1308149115 def    109 
788  1308156732 ghi    113 
7  1308156830 xyz    112 
455  1308158073 def    114 

我能指望FILE_NAME的每個唯一實例,以顯示時間出現的每個FILE_NAME值多少?關於確切的佈局無關緊要。如果可能的話,我希望在不創建表格並將數據插入其中的情況下執行此操作。例如,在上面的數據中,file_name「def」出現兩次,所以它會被計數兩次。

回答

5

你只需要像做:

SELECT file_name, COUNT(*) FROM downloads_downloads GROUP BY file_name;