2011-02-02 5 views
0

2 개의 테이블이 있으며, 그 중 하나에는 상품에 대한 초기 할인이 있고 다른 하나에는 점원이 초기 할인에 추가로 할인 할 수있는 할인이 해당 상품에도 있습니다. 많은 수의 항목을 판매 할 수 있으며 할인을 적용 할 수 있습니다.상품 할인 방법

여기서 내가 시도하는 것은 group by order_id이며 할인에 대한 총 금액을받는 것입니다. 나는 이것이 정확하지 않다. 왜냐하면 각 품목이 50 % 할인 된 10.00 달러 구매에서 대략 $ 5가되어야 할 때 .19 센트를 얻고 있기 때문이다.

어떻게 계산합니까?

SUM(price*quantity)*(SUM(a.discount)+b.discount) AS discount 
+4

테이블 구조는 무엇입니까 그래서, 당신은 같은 것을 끝낼? – Merijn

+0

수학 문제가 잘못된 것 같습니다. – diagonalbatman

+0

예, Andy, 저는 믿습니다. 명확하지 않은 점은 점원이 25 % 할인 된 5 가지 할인 상품을 계산할 때 합계가 125 % 할인 된 'SUM()'을 사용하여 계산 한 것입니다. 정확하지 않습니다. –

답변

1

은 단일 주문 항목에 대해, 당신은 가격, 수량, 초기 할인 (제로가 될 수 있지만 모든 주문에 대한 할인은 항상 존재) 및 특정 순서로 항목과 연관된 옵션 할인을 . 따라서 테이블은 ORDER 및 ORDER_IITEMS입니다. 할인 혜택이에 따라 당신은 아마 계산이 필요 분수 (0.000 ... 1.000)로 저장되는 것을 감안할 때 :

(price * quantity * (initial_discount + optional_discount)) 

은 하나의 항목에 대한 할인을 받으실 수 있습니다; 당신은 그 전체 표현을 통해 집합합니다. SUM과의 열 이름

SELECT Order_ID, SUM(price * quantity * (initial_discount + optional_discount)) 
    FROM Orders AS O 
    JOIN Order_Items AS I ON O.Order_ID = I.Order_ID 
GROUP BY Order_ID; 

적용 별칭 :

SELECT Order_ID, SUM(I.price * I.quantity * 
        (O.initial_discount + I.optional_discount)) AS discount 
    FROM Orders AS O 
    JOIN Order_Items AS I ON O.Order_ID = I.Order_ID 
GROUP BY Order_ID; 
+0

@Jonathan, 감사합니다. 당신이 말했듯이, 초기 할인이 적용되거나되지 않을 수 있습니다. 할인이 없으면 사용자는 0.00을 입력합니다. 선택적 할인은 테이블이 조인 될 때 ​​알려집니다. 그 시점에서 두 개의 할인 열이 있습니다. 점원은 초기 할인을 제공할지 여부를 결정할 수 있습니다. 두 할인 모두 완전히 선택 사항입니다. 적용된 할인은 임의적이며 재량은 점원에게 맡깁니다. –

+0

@Jonathan, 나는 할인 표가 없다는 것을 잊었다. 할인은 order W item_order 테이블의 필드입니다. –

+0

@ 짐 : 설명이 끝난 단순한 스키마가 주어지면 계산이 (훨씬!) 더 간단 해졌으며이를 반영하기 위해 내 대답을 편집했습니다. 그러나 문제의 세부 사항을 정확하게 알려주는 것이 얼마나 중요한지를 보여줍니다. 문제를 정확하게 진술하지 않으면 사람들은 정확하게 당신을 도울 수 없습니다. –