如何为订购产品的每个user_id排名和列出前10个order_id?

时间:2019-06-16 17:18:38

标签: mysql sql

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中做到这一点?任何帮助深表感谢!

2 个答案:

答案 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