Php 产品移动算法排名(基于销售单位和净收入)

Php 产品移动算法排名(基于销售单位和净收入),php,python,mysql,algorithm,ranking,Php,Python,Mysql,Algorithm,Ranking,我不完全确定这是否是提出这个问题的正确地点。希望有人能给出答案或建议 我经营一家小商店,出售商品。我有一个程序/电子表格,将列出最重要的移动项目 我可以按售出的单位总数对这些信息进行排序: Product 1, 15 Product 2, 12 Product 3, 7 。。。或按销售总额计算: Product 2, $250.00 Product 1, $75.00 Product 3, $30.00 我想在这两个值之间创建一个组合排名。我有编程(PHP、Python

我不完全确定这是否是提出这个问题的正确地点。希望有人能给出答案或建议

我经营一家小商店,出售商品。我有一个程序/电子表格,将列出最重要的移动项目

我可以按售出的单位总数对这些信息进行排序:

Product 1, 15  
Product 2, 12  
Product 3, 7
。。。或按销售总额计算:

Product 2, $250.00   
Product 1, $75.00  
Product 3, $30.00  
我想在这两个值之间创建一个组合排名。我有编程(PHP、Python、Perl等)和数据库经验。我想知道是否有某种方法可以通过收入和单位的组合价值来确定最具影响力的公司。例如,产品1销售的单位较多,但收入较少。也许产品2更重要。也许是一个基于积分的系统,每售出一个单位可以得到1.5分,每一美元可以得到2分。(货币政策略为重要)


有什么想法吗?

假设您使用的是MySQL,那么这个查询应该非常接近您要查找的内容:

SELECT Product, 
  CAST(1.5*UnitsSold as DECIMAL) + 2*DollarsSold OverallRank
FROM YourTable
ORDER BY OverallRank DESC


如果不是,同样的概念应该在电子表格中使用。

我也不确定这是否是提出此类问题的正确地方。似乎您要求的是算法或一些标准业务规则,但要求的是最终代码

嗯,我发布了一个提出新想法的方法。我构建了一个算法列表,并对顶级值进行了测试:

import math

fs = [
 ('Plain coef',    lambda m: math.log(m[1]* units_coef)  
                           + math.log(m[2]* money_coef)  ),
 ('Coef into log', lambda m: m[1]* units_coef 
                           + m[2]* money_coef                       ),
 ('Coef out log',  lambda m: math.log(m[1])* units_coef  
                           + math.log(m[2]) * money_coef ),
 ('Coef out log2',  lambda m: math.log(m[1],2)* units_coef  
                           + math.log(m[2],2) * money_coef ),
]

movings = [ ( 'product1', 1500,    75.00 ),
            ( 'product2',    2, 90000.00 ),
            ( 'product3', 1200,  8000.00 ),
            ( 'product4',    6,  4000.00 ),
            ( 'product5',  500,  1000.00 ),
            ( 'product6',  800,  1200.00 ),
            ( 'product7',  300,   800.00 ),
           ]

units_coef = 1.1
money_coef = 0.04

for (n,f) in fs:
    print ''
    print n
    print '==============================================='
    for i in sorted( movings, 
                     key = lambda m: f(m) , 
                     reverse=True)[:3]:
        print i, f(i)
结果:

$ python solds.py 

Plain coef
===============================================
('product3', 1200, 8000.0) 12.9537080114
('product6', 800, 1200.0) 10.6511229184
('product5', 500, 1000.0) 9.99879773234

Coef into log
===============================================
('product2', 2, 90000.0) 3602.2
('product1', 1500, 75.0) 1653.0
('product3', 1200, 8000.0) 1640.0

Coef out log
===============================================
('product1', 1500, 75.0) 8.21724195034
('product3', 1200, 8000.0) 8.15857239218
('product6', 800, 1200.0) 7.63667597387

Coef out log2
===============================================
('product1', 1500, 75.0) 11.8549742115
('product3', 1200, 8000.0) 11.7703319309
('product6', 800, 1200.0) 11.0173945564

你需要考虑的第一件事是“你到底希望这些排名意味着什么”。一个简单的方法是以上述两种方式(以递增方式)对它们进行排序,并分配一个分数,如
出售的单位数\u排名*1.5+收集的总金额\u排名*2.0
,然后根据该分数对它们进行排序。在您的情况下,这将使产品2以
1.5
(或
4.0
,这取决于您是从
0
还是从
1
)进行索引,而产品1的得分为
2.0
(或
5.5
),您是在要求业务算法而不是代码吗?如果是的话,试着用谷歌或Bing搜索“ABC帕累托分析清单”,这是一种按照你的要求进行排名的常用方法。