This is the A/B Experiment table with 4 columns:
1. user_id
2. experiment_id
3. experiment_date
4. experiment_type (values are either: test or control - group)
This is the Order table with 3 columns:
1. user_id
2. order_sku
3. order_date
我正在尝试列出订购产品的前10位用户ID,并为每个Experiment_id对其进行排名。
The output Table should look like this:
1. experiment_id
2. Rank
3. user_id
4. experiment_type
5. experiment_date
我将如何在mySQL中做到这一点?任何帮助深表感谢!
答案 0 :(得分:1)
您将RANK()
与INNER JOIN
一起使用
select RANK() as Rank , experiment_id , user_id , experiment_type , experiment_date
from experiment e
inner join order o
where e.user_id=o.user_id
答案 1 :(得分:0)
这是我的解决方法。
SELECT e.*, r.rank FROM `Experiment` e
LEFT JOIN (
SELECT c.user_id, c.rank FROM
(SELECT user_id, COUNT(user_id) as rank FROM `Order` GROUP BY user_id) c
ORDER BY c.rank DESC LIMIT 10
) r ON e.user_id = r.user_id