2014-10-19 1 views
1

피자 주문을 저장하는 테이블이 있습니다. 표에는 quantity라는 값이 있습니다. 특정 순서로 피자의 양. 나는 "주문에 따라 다른 피자 수량에 대한 주문 분포를 얻는 쿼리를 작성해야합니다."질문은 "다음과 같은 피자 수량의 주문 수를 계산해야합니다. 1, 2, 3, 4, 5, .. 6 '6 위에 잠시 동안 연구 한 후에 내가이 쿼리를 내놓았다,하지만 내가 원하는 방식으로 작동 나던 다음은 쿼리와 그 결과입니다 감사합니다 사전에SQL Group 사용자 정의 범위로 하시겠습니까?

SELECT CASE 
    WHEN Quantity = 1 THEN '1 ' 
    WHEN Quantity = 2 THEN '2' 
    WHEN Quantity = 3 THEN '3 ' 
    WHEN quantity = 4 THEN '4' 
    WHEN quantity = 5 THEN '5 ' 
    WHEN quantity = 6 THEN '6' 
    ELSE '>6' 
    END AS Range, COUNT(Quantity) AS Amount 
FROM orders 
GROUP BY Quantity 

이 출력.. :

Range  Amount 
1   2 
2   3 
3   3 
4   4 
5   5 
6   1 
>6  1 
>6  2 
>6  2 
>6  1 

은 어떻게> 6 범위를 그룹화하고, 금액의 계산에 대해 갈 것입니다. 그것은 하나의 '> 6'항목 아래에 있도록?

범위 AS 16,
+1

수량 대신 "범위"로 그룹을 사용할 수 있습니까? – Riad

+0

당신은 어떻게 당신을 의미합니까? – Alex94

+1

하나의 플랫폼을 선택하십시오. MySQL 또는 SQL Server를 사용하고 있습니까? 그들은 다릅니다. 질문에 태그를 적용하기 전에 태그에 대해 읽은 것이 있습니까? –

답변

3

한 가지 가능한 방법은 예를 들어 *를 들어, GROUP BY 절에 같은 CASE WHEN 문을 사용하다 :

SELECT CASE 
    WHEN Quantity <= 6 THEN CAST(Quantity as VARCHAR(1)) 
    ELSE '>6' 
    END AS Range, COUNT(Quantity) AS Amount 
FROM orders 
GROUP BY (CASE 
    WHEN Quantity <= 6 THEN CAST(Quantity as VARCHAR(1)) 
    ELSE '>6' 
    END)   

*) 원래 CASE WHEN statemen의 단순화 된 버전을 사용하여 티. SQL Server의 SQL 형식으로 작성되었습니다.

+0

물론 아, 고맙습니다! – Alex94

-1

SELECT IF (수량> 6 '> 6', 수량), (수량 * 금액) 금액 AS 주문

1

실행이 쿼리 대신 이전 한 FROM :

SELECT CASE 
WHEN Quantity = 1 THEN '1 ' 
WHEN Quantity = 2 THEN '2' 
WHEN Quantity = 3 THEN '3 ' 
WHEN quantity = 4 THEN '4' 
WHEN quantity = 5 THEN '5 ' 
WHEN quantity = 6 THEN '6' 
ELSE '>6' 
END AS Range, COUNT(Quantity) AS Amount 
FROM orders 
GROUP BY Range 
+1

이것은 오류를 표시합니다 - 유효하지 않은 열 이름 (범위) – Alex94

+0

동적으로 계산 된 열 (이 쿼리에서'Range'와 같은)은 GROUP BY 절에서 인식되지 않으므로이 쿼리는 실행되지 않습니다 – har07

+0

실행했습니다. MySQL과 그것은 괜찮아 보여 ... – Riad