にグループごとに上位10行を選択します。私は上位10行が注文を取得したいと思います(user_idは、activity_date、ACTIVITY_TYPE)私はこのようなテーブル持って指定された日付
上
id int primary key
user_id int,
activity_date date,
activity_type int,
activity_value float
uniqのキーを指定された日付(activity_date
)の各activity_type
のactivity_value
によって、今日または昨日と言います。
私は自己結合バリアントを試しましたが、正しい結果が得られませんでした。ここで私が試したことがあります。
select
a.user_id, a.activity_date, a.activity_type, a.activity_value
from
my_table a
left join
my_table b on a.activity_type = b.activity_type and a.id < b.id
where
a.activity_date = curdate()
group by
a.id
having
count(*) < 10
order by
a.activity_value desc;
SQLフィドル:http://sqlfiddle.com/#!9/d30332/3
誰かが私はこのクエリを修正助けることができますか?
は、T-SQLでは、ACTIVITY_TYPE用のパーティション上のランクを行うことができますが、私は、MySQLの等価だか分かりません。 – derloopkat
現在のソリューションで何が問題になっていますか? –
@derloopkat私が知っているようにMySQLに相当するものはありません) –