工作中碰到一个需求,就是统计用户手中持有的每种类型的优惠券的数量。因为有效期和来源均不相同,同样的优惠券每一张在数据库中都是单独的一条数据。怎么才能统计出用户都持有那些优惠券,并且各种类型的优惠券的数量呢。 我想到的就是先去重,然后查找每一类优惠券的第一条数据,再做个子查询统计这种优惠券的数量。
最佳解决方案
可以这样写:
select s.*
from (
select *, row_number() over (partition by [分组字段] order by [排序字段]) as group_idx
from table_name
) s
where s.group_idx = 1