在面试中被问到这样的题目,当时被问蒙了,后来查阅了一下相关资料搞懂了一些,记录一下。
题目:有一堆的用户消费数据,字段为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;