有表可能有几万数据,大致如下
会员号 手机 年消费额
1 137XXXX9090 1120
2 137XXXX9127 9082
3 189xxxx8021 123
。
。
。
。
其中会员号是unique的,手机号可能相同。
现要求选出一定会员,比如1000人,要求是年消费额最高的1000人,可手机号不能重复,重复的补足1000人。比如,如果年消费额最高的1000人拉出来有999个distinct 的会员手机 ,其中重复手机号的记录为
会员号 手机 年消费额
190 156XXXX2766 10000
870 156XXXX2766 22222
则剔除会员号为190的那条记录,由手机号与这1000人(999个distinct的手机号)不同的年消费额最高的人补进去。
------解决思路----------------------
SELECT TOP 1000 * FROM
(SELECT ROW_NUMBER()OVER(PARTITION BY 手机 ORDER BY 年消费额 DESC)RN,* FROM TB)T
WHERE RN=1
ORDER BY 年消费额 DESC
------解决思路----------------------
select top 1000 * from
(
select * from tb as t where not exists(select 1 from tb where 手机=t.手机 and 年消费额>t.年消费额)
) as t
order by 年消费额 desc