为什么distinct后还是有重复项

select
DISTINCT
left(ProductClassName,LOCATE(">>",ProductClassName)-1) 一级品类,
sum(ProductNum+ProdutNumUpdate) 销量
from
lm_sh_order_settle_excel_aliexpress
where
SettlementDate between "2021-06-01" and "2021-06-30"
and
sku in(2538628,2565482,2165489,2025274,2051544,1814839,2204759,1853641,
1860895,2210660,2180455,2526731)
group by sku,ProductClassName

img

没有大神解答咩

因为你查询了两个字段,任意一个不同就会不一样。

你在外边再套一层,把 DISTINCT放在外边

在做聚合操作的时候是根据SKU和ProductClassName做聚合的,那算出来的结果其实是同一个ProductClassName和SKU下的销量,而不是一级品类的销量,如果需要按照一级品类算销量,则应该按照一级品类做聚合。

解释一下distinct:distinct是对查询结果列做去重,查询的结果列都一样才会做去重,而就截图而言,“汽车配”的销量是不同的,

所以如果需要算出“汽车配”销量,应该按照一级品类做去重,如group by left(ProductClassName,LOCATE(">>",ProductClassName)-1)

回复不易,如果我的回复对你有所帮助的话,请记得采纳哦~

select DISTINCT * from (
    select
        left(ProductClassName,LOCATE(">>",ProductClassName)-1) 一级品类,
        sum(ProductNum+ProdutNumUpdate) 销量
    from
        lm_sh_order_settle_excel_aliexpress
    where
        SettlementDate between "2021-06-01" and "2021-06-30"
      and sku in(2538628,2565482,2165489,2025274,2051544,1814839,2204759,1853641,1860895,2210660,2180455,2526731)
    group by sku,ProductClassName
)