2016-06-10 26 views
2

我有一個數據庫,用一個時間戳保存收音機上播放的每首歌曲的記錄。我試圖發現增加的歌曲播放10倍,因爲16年6月1日,我跑了這一點:在不同的日期找到總和大於sum的變量的總和

SELECT SONG_ID 
FROM StationPlays 
WHERE StationPlays.DATE > '2016-06-01' AND SONG_ID IN 
(
    SELECT SONG_ID 
    FROM StationPlays 
    WHERE StationPlays.DATE < '2016-06-01' 
    GROUP BY SONG_ID 
    HAVING SUM(SPINS) < 1000 
) 
GROUP BY SONG_ID 
HAVING SUM(SPINS) > 10000 

有沒有辦法做到這一點編程,我可以只設置1000爲變量,並使用10 *可以查找所有在過去x天內增加了10倍(或20倍或更多)的歌曲嗎?

回答

2

我會嘗試這樣的事:

SELECT SONG_ID, COUNT(*) 
FROM StationPlays 
WHERE StationPlays.DATE > '2016-06-01' 
GROUP BY SONG_ID, StationPlays.DATE 
HAVING COUNT(*) > (10 * (SELECT COUNT(*) 
         FROM StationPlays SP2 
         WHERE SP2.DATE > '2016-06-01' 
          AND SP2.SONG_ID = StationPlays.SONG_ID)) 
+0

是否COUNT(*)計算在查詢的行數?給子查詢一個別名有什麼好處? –

+0

我剛剛給Group By添加了「Date」。 Count會統計每天的行數 - 歌曲每天播放的次數。 –