2014-12-30 3 views
0

고객 총 주문의 총 판매액 (즉, 가격 합계)을 표시하는 데 문제가 있습니다. 다음 SQL 문을 사용하여 'Order1', 'Order2'및 'Customers'테이블을 조인하여 필요한 속성에 도달하여 3 개 이상의 주문을 한 고객에게 올바른 도시를 표시하고 주문 수량을 합산하여 : 내가 좋아하는 표정으로 작업 테이블의주문 비용 합계 방법

SELECT c.CityName, SUM(o2.Orderquantity) AS 'Total sales amount' 
FROM Order1 o1 
INNER JOIN 
(SELECT o1.CustomerNr 
FROM Order1 o1 
GROUP BY o1.CustomerNr 
HAVING COUNT(o1.CustomerNr) >= 3) 
AS a ON o1.CustomerNr = a.CustomerNr 
INNER JOIN Order2 o2 ON o1.Ordernr = o2.Ordernr 
INNER JOIN Customers c ON o1.CustomerNr = c.CustomerNr 
GROUP BY c.CityName 

구조는 : CustomerNr, 도시 이름

  • 'Order1'럼이 있습니다 : Ordernr을 CustomerNr
    • '고객'은 열이
    • 'Order2'에는 Ordernr, Productnr 또는 Or 열이 있습니다. 데르 수량
    • '제품은'럼이 있습니다, ProductNr, 가격 그럼, 내가 원하는 것은 적어도 3 개 주문을 (지금까지 너무 좋아) 만든 고객의 도시를 보여줄 수있을 것입니다

    을하지만, 또한 이러한 고객에 대한 총 판매량 (총 주문 수량 대신)을 가지고 있다면 위의 테이블 구조에 따라 어떻게 할 수 있는지 알 수 있습니까?

    샘플 데이터 : 테이블에 대한 샘플 데이터 '고객'

    - CustomerNr CityName: 
    - 01109  New York 
    - 01999  Los Angeles 
    - 08120  London 
    
    Sample data for 'Order1': 
    
    - Ordernr CustomerNr 
    - 1306  1109 
    - 1306  1109 
    - 1307  1109 
    
    Sample data for 'Order2': 
    
    - OrderNr ProductNr Order quantity: 
    - 1306  15-116  01109 3 
    - 1306  46-701  01109 2 
    - 1307  15-96  01109 1 
    - 1308  17-91  18208 1 
    
    (etc...) 
    
    Sample data for 'Products': 
    
    - ProductNr Price: 
    - 15-116  44.00 
    - 15-96  28.50 
    - 46-701  3000.00 
    
    etc... 
    

    당신은 고객이 serveral ordernr에 연결, 당신은 '제품'에서 볼 수 있듯이 할 수있다 'Order1'에서 볼 수 있듯이 , 모든 제품에는 가격과 함께 고유 한 제품 번호가 있습니다. 'Order2'에서 볼 수 있듯이 고객 1109는이 경우 주문 1306에 대해 7 개의 15-115 제품과 1 개의 46-708 제품을 구매했습니다.하지만이 고객은 15-96 제품 중 2 개를 구입했습니다 다른 순서로 (1307).

    CityName이, 총 판매 금액 : 뉴욕 6160.50

    +0

    여러 장소에서 같은 테이블 별칭 (O1)로 이름 바꾸기 매우 confu된다

    이 시도 조회에서 테이블 제품 의 가입 노래. – jarlh

    답변

    0

    당신은 단지에있는을이 경우 결과는 다음과 같아야합니다 그래서 뉴욕 출신이 고객은, 총 2 개 주문을했다

    SELECT c.CityName, SUM(o2.quantity * p.Price) AS 'TotalSalesAmount' 
    FROM (SELECT DISTINCT Ordernr, CustomerNr FROM Order1) AS o1 
    INNER JOIN (SELECT o1.CustomerNr 
          FROM Order1 o1 
          GROUP BY o1.CustomerNr 
          HAVING COUNT(o1.CustomerNr) >= 3 
          ) AS a ON o1.CustomerNr = a.CustomerNr 
    INNER JOIN Order2 o2 ON o1.Ordernr = o2.Ordernr 
    INNER JOIN Customers c ON o1.CustomerNr = c.CustomerNr 
    INNER JOIN Products P ON o2.ProductNr = P.ProductNr 
    GROUP BY c.CityName; 
    
    +0

    이 SQL 문을 사용하면 주문에서 고유 한 제품 번호의 가격 만 계산하지만 테이블에있는 값을 사용하면 고객이 5 가지 제품 (하나의 고유 제품 번호)과 2 가지 제품을 구입할 수 있습니다. (다른 고유 제품 번호). 그래서 내가 원하는 것은 그들이 한 총 주문에 연결된 고객의 총 수량에 대한 총 판매 금액을 합산 할 수 있어야한다는 것입니다. 그 문제를 해결하는 방법을 알고 있습니까? 테이블 고객에 대한 – eqinna

    +0

    샘플 데이터 : CustomerNr, CityName이 : 01109, 뉴욕 01999, 로스 앤젤레스 08120, 런던 등 Order1에 대한 샘플 데이터 : OrderNr, CustomerNr : 1306, 01999 1308 01109, 제품에 대한 08,120 샘플 데이터 : ProductNr, 가격 : 15-116, 15-96 44.00, 28.50 등 ... – eqinna

    +0

    이제 첫 번째 게시물을 원하는 결과가있는 샘플 데이터로 업데이트했습니다. – eqinna