php – 基于类别和分支的Mysql排名
发布时间:2020-12-13 17:55:49 所属栏目:PHP教程 来源:网络整理
导读:我很难搞清楚并试图解决这个问题. 你能帮助我提出一个逻辑或想法,如何根据销售情况得出每个分支的每个类别的排名? 例如: branch_code_id = 9的等级1是Accicular,因为它有300,000的销售额 branch_code_id = 9的等级2是WLO,因为它只有200,000 销售. 与其他分
我很难搞清楚并试图解决这个问题.
你能帮助我提出一个逻辑或想法,如何根据销售情况得出每个分支的每个类别的排名? 例如: > branch_code_id = 9的等级1是Accicular,因为它有300,000的销售额 与其他分支相同.我只需要每个branch_code_id的类别等级. 我无法弄清楚如何循环这个.如您在excel输出中所见,排名将放在“r”列中. 顺便说一句,这是我用来获取你在截图中看到的结果的sql语句. SELECT a.id,a.date,a.branch_code_id,SUM(b.amount),c.category FROM sales_add_h AS a INNER JOIN sales_add_i AS b ON a.id = b.sales_h_id INNER JOIN control_panel_item_create AS c ON b.item_code_id = c.id GROUP BY c.category,b.amount ORDER BY SUM(b.amount) DESC 多谢你们!
试试这个查询
SELECT @rn:=if(@prv=branch_code_id,@rn+1,1) as rId,@prv:= branch_code_id as branch_code_id,val,id,date,category FROM (SELECT a.id,SUM(b.amount) as val,c.category FROM sales_add_h AS a INNER JOIN sales_add_i AS b ON a.id = b.sales_h_id INNER JOIN control_panel_item_create AS c ON b.item_code_id = c.id GROUP BY c.category,b.amount ORDER BY a.branch_code_id,SUM(b.amount) DESC)tmp JOIN (SELECT @rn:=0,@prv:=0)t SQLFIDDLE了解排名如何运作. 我已经为你提到的每个branch_id做了排名,如果你想为特定分支中的每个类别排名,而不是你需要添加另一个存储类别的变量并在if子句中进行比较,还需要在内部排序数据通过c.category,SUM(b.amount)DESC查询相应的顺序 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |