mysql实现over partition by 的查询(分组排序求TOP)


需求是求以下表中每一种分类销量最多的三种商品:

方法1:

SELECT TBL.ID,TBL.PRODUCTNAME,TBL.TYPENAME,TBL.SALECOUNT
FROM PRODUCT TBL
LEFT JOIN PRODUCT L_TBL ON TBL.TYPENAME = L_TBL.TYPENAME AND TBL.SALECOUNT< L_TBL.SALECOUNT
GROUP BY TBL.ID,TBL.PRODUCTNAME,TBL.TYPENAME,TBL.SALECOUNT
HAVING COUNT(L_TBL.ID)< 3
ORDER BY TBL.TYPENAME,TBL.SALECOUNT DESC

方法2:

SELECT TBL.ID,TBL.PRODUCTNAME,TBL.TYPENAME,TBL.SALECOUNT
FROM PRODUCT TBL
WHERE 3>(SELECT COUNT(*) FROM PRODUCT WHERE TYPENAME =TBL.TYPENAME AND SALECOUNT>TBL.SALECOUNT)
ORDER BY TBL.TYPENAME,TBL.SALECOUNT DESC

查询结果:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM