2013-03-02 2 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 점이 판매되는 각 단위당 주어질 수도 있고 1 달러당 2 점을주는 점 기반 시스템 일 수도 있습니다. (통화가 약간 더 중요 함)

아이디어가 있으십니까?

+0

당신이 생각해야 할 첫 번째 것은 "무엇을 정확하게 당신이이 계급을 의미 할"입니다. 간단한 방법은 위의 두 가지 방법 (증가하는 방식)으로 그들을 정렬하고'units_sold_rank * 1.5 + total_money_gathered_rank * 2.0'과 같은 점수를 할당하고이를 기반으로 정렬하는 것입니다. 귀하의 경우 제품 2는 상단에 '1.5'(또는 '0'또는 '1'에서 색인을 생성하면 '4.0', 제품 1은 '2.0' 또는 '5.5') – dmg

+0

코드가 아닌 비즈니스 알고리즘을 요구하고 있습니까? 그렇다면 인터넷 검색을 시도하거나 "ABC 파레토 분석 인벤토리"로 질문하십시오. – rlb

답변

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