2016-03-30 14 views
0

私はこのクエリについていません。私は日付、card_idでグループを行う必要があり、最高のヒットのみを表示する必要があります。現時点では日ごとにmysqlをグループ化してカウントし、毎日の最高値のみをフィルタリングします。

date  card_name  card_id hits 
29/02/2016 Paul Stanley 1345 12 
29/02/2016 Phil Anselmo 1347 16 
25/02/2016 Dave Mustaine 1349 10 
25/02/2016 Ozzy   1351 17 
23/02/2016 Jhonny Cash  1353 13 
23/02/2016 Elvis   1355 15 
20/02/2016 James Hethfield 1357 9 
20/02/2016 Max Cavalera 1359 12 

マイクエリ

SELECT DATE(card.create_date) `day`, `name`,card_model_id, count(1) hits 
FROM card 
Join card_model ON card.card_model_id = card_model.id 
WHERE DATE(card.create_date) >= DATE(DATE_SUB(NOW(), INTERVAL 1 MONTH)) AND card_model.preview = 0 
GROUP BY `day`, card_model_id 
; 

私はcard_id、日付でグループ化すると高いヒットは日付ごとに1つだけの行を示す結果フィルタ:私はこのデータを持っています。私がして、グループに(ヒット)最大を実行するが、私は

と同様に動作しませんかのように:その上

date  card_name  card_id hits 
29/02/2016 Phil Anselmo 1347 16 
25/02/2016 Ozzy   1351 17 
23/02/2016 Elvis   1355 15 
20/02/2016 Max Cavalera 1359 12 

どれ光が理解されるであろう。読んでくれてありがとう。

+0

クエリには2つのテーブルがあります。サンプルデータには1つしかありません。 –

答えて

2

ここにこれを行う方法があります。あなたのサンプルデータ(ないクエリ)に基づいて:

select s.* 
from sample s 
where s.hits = (select max(s2.hits) 
       from sample s2 
       where date(s2.date) = date(s.date) 
       ); 

(未遂クエリが異なる列を持っており、あなたが試みたクエリは、サンプルデータとは関係を持たないように見えるので、それらのテーブルを組み込む方法は不明です2つのテーブル)。

関連する問題