2012-11-04 4 views
2

모든 SQL 질문을 검색했으며 원하지 않는 모든 버전을 발견 했으므로 요청해야합니다. 나는 두뇌 자물쇠에있다 - 카운트와 합계와 그룹이 있고 모두 함께 던져진 조인이라는 것을 알고있다.SQL Count Innerjoin by Grouping

2 표

  1. CustomerTable - CustID, CustQuality (값 등 좋은 고객, 불량 고객, 신규 고객)
  2. PurchaseTable (PurchID, PurchItem, PurchDate)

I 지난 30 일 동안 Good, Bad, New Customers가 얼마나 많은 구매를했는지 계산하려고합니다.

나는 조인 및 그룹 수 등을 시도하고 난 점점 계속 :

  • GoodCustomer - CustID2 - 1 PURCH
  • GoodCustomer - CustID3 - 3 PURCH
  • GoodCustomer - CustID4 - 2 PURCH
  • BadCustomer - CustID7 - 2 구매
  • BadCustomer - CustID1 - 4 구매
  • 신규 고객 - CustID9 - 1 구매
  • NewCustomer - CustID4 - 4 PURCH 등 등

난 그냥 원하는 전반적인 결과

  • 3 좋은 고객은
  • 이 명 나쁜 고객이 만든 6 개 구입
  • 만든 6 개 구매
  • 2 명의 신규 고객이 5 개의 Purcahses를 만들었습니다.

그 다음에 추가 기능 작동 ... 나는 또한 참여해야하는 세 번째 테이블을 가지고 있습니다. 1 개 고객이었다 -

그래서 CustomerLocation (동서남북)의 CLID, CLLocation (값) 나는

  • 3 좋은 고객은 6 개 구입을 만든 그룹 아래 다음과 같은 휴식을 알고 싶어하는 경우 동쪽에서 5 고객, 1 웨스트
  • 이 신규 고객 5 Purcahses 만든 - -

과 남쪽 2 고객을 북에서 남에서 2 명 고객은

  • 이 명 나쁜 고객은 6 개 구입했다 마지막 새 쿼리는 ... WHERE CLLocation = South

    또는 지역별로 조회하고 싶다면 ...하지만 일체의 HELP -

    • 한 좋은 고객은 3 명 구매
    • 이 나쁜 고객이 개 구입
    • 0 신규 고객에 0 Purcahses 내가 많이 해달라고 부탁 알고

    을 만든 만든 만든 대단히 감사해야합니다!

  • +0

    은 당신이 테이블의 외래 키 제약 조건을 지정할 수 있습니다 첫 번째 질문에 대답해야합니까? – rano

    +0

    CST.CustID - 고객 기본, PCHT.PurchID - 구매 우선, PCHT.PurchCustID - 고객이 아닌 외국인, LCT.LCTID - 위치는 기본, 고객은 LCT.LCTCustID –

    답변

    0
    SELECT C.CustQuality, COUNT(DISTINCT c.CustID) AS tot_Customer, COUNT(PurchID) AS tot_Purch 
    FROM CustomerTable C, PurchaseTable P 
    WHERE C.CustID = P.PurchCustID 
    GROUP BY C.CustQuality; 
    
    SELECT C.CustQuality, CL.CLocation, COUNT(DISTINCT c.CustID) AS tot_Customer, COUNT(PurchID) AS tot_Purch 
    FROM CustomerTable AS C, PurchaseTable AS P, CustomerLocation AS CL 
    WHERE C.CustID = P.PurchCustID AND CL.LCTCustID = C.CustID 
    GROUP BY C.CustQuality, CL.CLocation; 
    
    SELECT C.CustQuality, CL.CLocation, COUNT(DISTINCT c.CustID) AS tot_Customer, COUNT(PurchID) AS tot_Purch 
    FROM CustomerTable AS C, PurchaseTable AS P, CustomerLocation AS CL 
    WHERE C.CustID = P.PurchCustID AND CL.LCTCustID = C.CustID AND CL.CLocation='North' 
    GROUP BY C.CustQuality; 
    
    +0

    COUNT (DISTINCT c.CustID)가 오류 누락 연산자를 계속 내 보냅니다. –

    +0

    방금 ​​이유를 알아 냈습니다 ... SQL을 통해 코드를 작성하고 있지만 실제로 테스트 모델에 대한 액세스를 사용하고 있습니다. 액세스는 별개의 것이 아닙니다. 버머! –

    +0

    당신이 접근을 피할 수있는 경우에 : D – rano

    0

    SELECT COUNT(DISTINCT c.CustID), CustQuality, COUNT(PurchID) FROM CustomerTable c 
    INNER JOIN PurchaseTable p ON c.CustID = p.CustID 
    GROUP BY CustQuality 
    
    +0

    빠른 답장을 보내 주셔서 감사합니다. 그것은 계속하지만 "누락 된 연산자"를 받고 (DISTINCT c.CustID) –

    +0

    오타가 있었고, 미안 해요, * 잘못되었습니다, 지금은 작동합니까? –

    +0

    나는 그것을 본래대로 고쳤다. 그러나 나는 어떤 이유로 든 같은 오류 COUNT (DISTINCT c.CustID)를 계속 얻는다. .. 나를 견과를 몰아 라! Rano가 위와 동일합니다. –