2012-12-06 1 views
0

만약 내가이 테이블이 각 ticketid에 대한 그래서사용자 정의를 선택 합> X

TICKETID | PRICE | NUMBER 

를, 플레이어는 ticketid에 각 번호에 대한 가격을 지불 할 수 있습니다. 플레이어가 ticketid 25 1 $, 3 $와 숫자 22, 23, 4 개 $ 24을 지불하고자하는 경우

그래서, 다음 표는 다음과 같이 표시됩니다

TICKETID | PRICE | NUMBER 
25  | 1 | 22 
25  | 3 | 23 
25  | 4 | 24 

가 난을 선택합니다 무제한 항공권으로 총 가격이 50 점을 넘으면 상품을 수령 할 수 있습니다.

무작위 화가 공정하고,이 무승부를 할 때 각 티켓에는 1 개의 유인율 만 있으면됩니다. DISTINCT 또는 GROUPBY를 사용하지 않으면 숫자가 10 인 ticketid에 2 개의 숫자가있는 티켓보다 더 많은 기회가 주어집니다.

나는 이것을 시도했지만 작동하지 않습니다 :
SELECT DISTINCT(ticketid),SUM(price) FROM table 
    WHERE SUM(price)>50 GROUP BY ticketid 

나는 오류 메시지를

아무도 도와 드릴 기능 BY GROUP의

잘못된 사용을 얻을?

+0

당신 BY' 그룹은'DISTINCT' – valex

+0

@valex 필요하지 않은'사용하는 경우 - 올바른,하지만 난 DISTINCT 제거 노력하고 속임수를 썼는지 HAVING 여전히 – NVG

답변

1

원하는 것은 집계에 의해 그룹이 처리 된 후에 가능한 후보 레코드에 적용되는 "HAVING"절입니다. Having은 THEN에 적용되고 최종 결과 집합에 포함되거나 포함되지 않습니다.

SELECT 
     ticketid, 
     SUM(price) TotalPrice 
    FROM 
     table 
    group by 
     TicketID 
    HAVING 
     sum(price) > 50 
+0

도움이 나던 – NVG