我被这个查询卡住了。我需要按日期card_id进行分组,并且只显示最高点击量。我有这个数据:
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进行分组,并过滤点击率较高的结果,每个日期只显示一行。就好像我在小组中打出了最大命中率,但我不会使用
类似:
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
如有任何线索,我们将不胜感激。感谢阅读。
这里有一种方法。基于样本数据(而非查询):
select s.*
from sample s
where s.hits = (select max(s2.hits)
from sample s2
where date(s2.date) = date(s.date)
);
您尝试的查询似乎与示例数据没有关系,因此不清楚如何合并这些表(尝试的查询有不同的列和两个表)。