php – 基于类别和分支的Mysql排名

前端之家收集整理的这篇文章主要介绍了php – 基于类别和分支的Mysql排名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我很难搞清楚并试图解决这个问题.
你能帮助我提出一个逻辑或想法,如何根据销售情况得出每个分支的每个类别的排名?

例如:

> 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

多谢你们!

试试这个查询
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查询相应的顺序

原文链接:https://www.f2er.com/php/134011.html

猜你在找的PHP相关文章