0
私は販売テーブルを持っており、各メンバーに過去3ヶ月間に最も頻繁に買い物をしたいと思っています。次のクエリでは、すべてのストアのすべてのメンバーが取得されますが、メンバーごとにストアが1つだけ必要です。MySQLは別の行で最上位の行グループを選択します
SELECT member_id, store_id, COUNT(DISTINCT docket) as docket_count, SUM(dollar_amount) as dollars
FROM sales
WHERE TIMESTAMPDIFF(MONTH, sale_date, CURDATE()) < 3
GROUP BY member_id, store_id
ORDER BY member_id, docket_count DESC, dollars DESC
それともこれはトリッキーです
SELECT store_id, COUNT(DISTINCT docket) as docket_count, SUM(dollar_amount) as dollars
FROM sales
WHERE TIMESTAMPDIFF(MONTH, sale_date, CURDATE()) < 3
AND member_id = 1
GROUP BY store_id
ORDER BY docket_count DESC, dollars DESC