我很难搞清楚并试图解决这个问题.
你能帮助我提出一个逻辑或想法,如何根据销售情况得出每个分支的每个类别的排名?
你能帮助我提出一个逻辑或想法,如何根据销售情况得出每个分支的每个类别的排名?
例如:
> branch_code_id = 9的等级1是Accicular,因为它有300,000的销售额
> branch_code_id = 9的等级2是WLO,因为它只有200,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
多谢你们!
试试这个查询
原文链接:https://www.f2er.com/php/134011.htmlSELECT @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查询相应的顺序