有一个表:销售员ID:userid,产品ID:pid,该产品的销量:c。表示这个销售员这个产品卖了多少件.
比如如下数据:1 1 10 //1销售了10件1产品
1 2 20 //1销售了20件2产品
1 3 20
1 2 40
1 3 92 1 4
2 1 8
2 2 4
2 3 98
2 2 883 1 20
3 9 20
3 9 40现在如何求每个销售员销售前2的产品,及其数量需要输出:
1 2 60
1 3 29
2 3 98
2 2 92
3 9 60
3 1 20
比如如下数据:1 1 10 //1销售了10件1产品
1 2 20 //1销售了20件2产品
1 3 20
1 2 40
1 3 92 1 4
2 1 8
2 2 4
2 3 98
2 2 883 1 20
3 9 20
3 9 40现在如何求每个销售员销售前2的产品,及其数量需要输出:
1 2 60
1 3 29
2 3 98
2 2 92
3 9 60
3 1 20
select userid,pid,sum(*) num
from tb
group by userid,pid
select *
from tb A
where (select count(*) from tb where A.userid=userid and A.num<num)<2
[征集]分组取最大N条记录方法征集,及散分....
select * from t2 a
where (select count(*) from t2 where userid = a.userid and c > a.c) < 2
order by a.userid,a.c desc 1楼的方法
select *
from tb A
where (select count(*) from tb where A.userid=userid and A.num<num)<2
当组内不同产品的销量C的最大值有重复时,这些记录不会被查询出