2017-08-28 65 views
2

我有一個SQL查詢:集團若干DATAS

SELECT COUNT(id) AS number_plays, id 
FROM table 
WHERE date_play >= '2017-08-27 00:00:00' AND date_play <= '2017-08-27 23:59:59' 
GROUP BY id, date_play 
HAVING number_plays > 1 
ORDER BY number_plays DESC 

,並將結果出來是這樣的:

number_plays    id 
20       15 
40       15 
32       18 
20       15 

是否有可能組這一結果被播放次數?落得這樣的:

iterations     number_plays   id 
2       20     15 
1       40     15 
1       32     18 

我能得到一些幫助?提前致謝。

回答

3

兩件事 - 首先,如果您在GROUP BY子句中指定了一列,請嘗試在SELECT中指定它。只有MySQL允許這樣做,我發現它錯了,可能會引發錯誤/輸出錯誤的數據,你不明白爲什麼。

其次,只是包裝您的查詢與另一個查詢,以及number_plays添加到GROUP BY條款:

SELECT count(*) as iterations,t.number_plays,t.id 
FROM(
    SELECT id,date_play,COUNT(id) AS number_plays, 
    FROM table 
    WHERE date_play >= '2017-08-27 00:00:00' 
     AND date_play <= '2017-08-27 23:59:59' 
    GROUP BY id, date_play 
    HAVING number_plays > 1 
    ORDER BY number_plays DESC) t 
GROUP BY t.number_plays,t.id