2011-11-14 2 views
3

두 개 이상의 열 :카운트 고유의 행 내가 MySQL의 테이블에 다음과 같은 한 MySQL의

Item Name Total Fee Total Listed Total Sold 
watch  $0.70  2  1 
glasses  $2.50  3  1 

: 내가 필요로하는 것은 SQL에 의해 그룹에 의해 출력 이하

Item Name Listing Fee Listing Type 
watch  $0.20  LISTED 
watch  $0.20  LISTED 
watch  $0.30  SOLD 
glasses  $0.50  LISTED 
glasses  $0.50  LISTED 
glasses  $0.50  LISTED 
glasses  $1.00  SOLD 

규칙은 각 "품목명"이 수수료 및 목록 유형이 정의 된 목록의 여러 기록을 갖게된다는 것입니다. 두 가지 "목록 유형"[LISTED & 품절]이있을 수 있습니다.

테이블에 대한 쿼리를 실행하고 언급 된 출력과 같은 요약을 생성하려고합니다.

감사 첫째 wikki

답변

2
SELECT 
    `Item Name`, 
    SUM(`Listing Fee`) AS `Total Fee`, 
    SUM(CASE `Listing Type` WHEN 'LISTED' THEN 1 ELSE 0 END) AS `Total Listed`, 
    SUM(CASE `Listing Type` WHEN 'SOLD' THEN 1 ELSE 0 END) AS `Total Sold` 
FROM `Table Name` 
GROUP BY `Item Name` 

이 정적을 사용하여 목록을 요약합니다 "- 당신은 그룹 BY 항목이 기록은, 당신은 작은 트릭을 사용할 수 합계를 계산하기 위해해야 리스팅 유형 ". 동적 목록이 필요하면 저장 프로 시저에 SQL을 작성하고 실행해야합니다.

출력 :

Item Name Total Fee Total Listed Total Sold 
watch  $0.70  2    1 
glasses  $2.50  3    1 

당신은 더이 단계를 취할 수 :

SELECT 
    `Item Name`, 
    SUM(
     CASE `Listing Type` 
      WHEN 'LISTED' THEN `Listing Fee` 
      ELSE 0 
     END 
    ) AS `Total Fee Listing`, 
    SUM(
     CASE `Listing Type` 
      WHEN 'SOLD' THEN `Listing Fee` 
      ELSE 0 
     END 
    ) AS `Total Fee Sold` 
FROM `Table Name` 
GROUP BY `Item Name` 

출력 :

Item Name Total Fee Listing Total Fee Sold 
watch  $0.40    $0.30 
glasses  $1.50    $1.00 
+0

고마워요 @MizardX, 그것은 내가 원하는 방식으로 일했습니다! 엄지 위로! – Wikki

2

-

SELECT 
    `Item Name`, 
    SUM(`Listing Fee`) `Total Fee`, 
    COUNT(IF(`Listing Type` = 'LISTED', 1, NULL)) `Total Listed`, 
    COUNT(IF(`Listing Type` = 'SOLD', 1, NULL)) `Total Sold` 
FROM 
    mytable 
GROUP BY 
    `Item Name`; 
+0

감사 @Devart! 이 트릭은 gr8에서 작동했습니다! 건배! – Wikki

관련 문제