在数据中选取满足条件的前几名

在面试中被问到这样的题目,当时被问蒙了,后来查阅了一下相关资料搞懂了一些,记录一下。

题目:有一堆的用户消费数据,字段为id、城市、性别、消费总额等,要求选取每个城市消费总额的Top N。面试官提示,可以用python,也可以用任何sql语言。

这里记录的是Oracle的做法。查看表的信息:

select * from huya;

USERID CITY SEX AMOUNT
  1001 gz                   male              100
  1002 bj                   female           1002
  1003 bj                   female           1040
  1004 bj                   male             1060
  1005 gz                   female           5100
  1006 bj                   male             1900
  1007 gz                   female            300
  1008 bj                   male              500
  1009 gz                   male               10

选取gz城市的消费总额Top 2:
select * from (select * from huya where city='gz' order by amount desc) where rownum<3;

选取bj城市的消费总额Top 2:
select * from (select * from huya where city='bj' order by amount desc) where rownum<3;

猜你喜欢

转载自www.cnblogs.com/bellz/p/10630554.html
今日推荐