2013-03-02 51 views
0

我不完全确定这是否是提问这个问题的正确位置。希望有人会有答案或可以提供一些建议。产品移动算法排名(基于销售量和净收入)

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

我可以按单位总数此信息销售:销售

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个点。 (货币更重要)

任何想法?

+0

您需要考虑的第一件事是“正是你想要这些队伍是什么意思”。一种简单的方法是按照上述两种方式对它们进行排序(以增加的方式),并为其指定一个分数,例如'units_sold_rank * 1.5 + total_money_gathered_rank * 2.0'并根据它进行排序。在你的情况下,产品2将以'1.5'的分数(或'4.0'取决于你是否从'0'或从'1'进行索引),而产品1的得分为'2.0'(或'5.5') – dmg 2013-03-02 14:24:52

+0

你是要求商业算法,而不是代码?如果是,请尝试使用Google搜索引擎优化分析库存搜索,这是常见的技巧,可以根据您的要求进行排名。 – rlb 2013-03-02 20:47:08

回答

0

假设你正在使用MySQL,那么这个查询应该是八九不离十了,你在找什么:

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

SQL Fiddle Demo

如果没有,同样的概念应在电子表格中工作。

0

我不确定这是否是问这类问题的正确位置。看起来你正在要求算法或一些标准的业务规则,但最终的代码。

那么,我发布了一种方法来提出新的想法。我构建的算法列表和测试顶级值:

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