2017-08-28 12 views
2

の数:グループIは、SQLクエリ持っ件のデータ

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

2つのこと - まず、GROUP BY句の中に列を指定する場合は、SELECTの内側に指定してください。 MySQLだけがこれを許可していますが、間違っていると判断してエラーを出力したり、間違ったデータを出力したりすることがあります。

第二に、ちょうど別のクエリでクエリをラップし、GROUP BY句にnumber_playsを追加します。

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 
関連する問題