【问题标题】:Product Movement Algorithm Ranking (Based on Units Sold and Net Income)产品移动算法排名(基于销售单位和净收入)
【发布时间】:2013-02-16 23:59:37
【问题描述】:

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

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

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

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 分,每售出 1 美元可获得 2 分。 (金钱稍微重要)

有什么想法吗?

【问题讨论】:

  • 您需要考虑的第一件事是“您希望这些排名到底意味着什么”。一种简单的方法是以上述两种方式(以递增方式)对它们进行排序,并分配一个像units_sold_rank * 1.5 + total_money_gathered_rank * 2.0 这样的分数,并以此为基础对它们进行排序。在您的情况下,产品 2 的得分为 1.5(或 4.0,具体取决于您是从 0 还是从 1 索引),而产品 1 的得分为 2.0(或5.5)
  • 您要的是业务算法而不是代码吗?如果是,请尝试使用谷歌搜索或搜索“ABC 帕累托分析库存”,这是根据您的要求进行排名的常用技术。

标签: php python mysql algorithm ranking


【解决方案1】:

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

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

SQL Fiddle Demo

如果不是,同样的概念应该适用于电子表格。

【讨论】:

    【解决方案2】:

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

    好吧,我发布了一种提出新想法的方法。我构建了一个算法列表并测试最高值:

    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
    

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多