2013-06-06 2 views
0

이 제목이 이해가되지 않는다면 제안 해주십시오!MySQL 서브 쿼리의 결과 집계

나는 간단한 (ish) 통계 쿼리를 만들고 있는데, 두 개의 열은 시간을 시작하고 항목을 볼 때 끝났다. 내가하고 싶었던 것은 특정 항목에 대한 뷰를 바운스로 분류 할 수있는 횟수를 반환하는 것이 었습니다.

현재 쿼리는 필요한 모든 정보를 반환 할 수 있습니다.이 시점까지는 상당히 간단하지만이 부분에서는 문제가 있습니다.

이것은 현재 잘못된 접근 방법입니다.

IF(((UNIX_TIMESTAMP(v.time_ended) - UNIX_TIMESTAMP(v.time_started)) < 5), 1,0) bounce 

나는이 값이 나는대로 분류하고있어 5보다 작은 경우 참조 시도하고 각 행의 UNIX_TIMESTAMP (v.time_ended)를 타고 UNIX_TIMESTAMP (v.time_started)에서 공제 할 필요가 '바운스 (bounce)'하고, 그렇다면 바운스 (bounce) 열까지 +1합니다.

데이터 행을 1 행만 반환합니다. 실행 방법을 모르는 경우 도움이 될 것입니다.

감사

조니

업데이트 된 코드

SELECT i.id, 
i.title, 
i.slug, 
i.buyer_id as buyer_id, 
i.date_added as date_added, 
a.slug as area_slug, 
COUNT(o.id) as offers, 
COUNT(v.item_id) as total_item_views, 
(COUNT(v.item_id)/COUNT(o.id)) conversion, 

SUM(CASE WHEN v.time_ended - v.time_started < 5 THEN 1 ELSE 0 END) 

FROM item as i 
LEFT JOIN offer as o ON i.id=o.item_id 
LEFT JOIN viewed_item as v ON i.id=v.item_id 
INNER JOIN area as a ON a.id=i.area_id 

WHERE i.id=3 

답변

1

난 당신이 뭔가 싶은 생각 :

SELECT Item 
     ,SUM(CASE WHEN v.time_ended - v.time_started < 5 THEN 1 ELSE 0 END)) 
FROM table 
GROUP BY Item 

업데이트 된 코드에서를, 당신이 놓치고있는 그룹 전체 :

SELECT i.id, i.title, i.slug, i.buyer_id as buyer_id, i.date_added as date_added, a.slug as area_slug, 
    COUNT(o.id) as offers, 
    COUNT(v.item_id) as total_item_views, 
    (COUNT(v.item_id)/COUNT(o.id)) conversion, 
    SUM(CASE WHEN v.time_ended - v.time_started < 5 THEN 1 ELSE 0 END) 
FROM item as i 
LEFT JOIN offer as o ON i.id=o.item_id 
LEFT JOIN viewed_item as v ON i.id=v.item_id 
INNER JOIN area as a ON a.id=i.area_id 
WHERE i.id=3 
GROUP BY i.id, i.title, i.slug, i.buyer_id, i.date_added, a.slug 
+0

좋아, 나는 시도 : SELECT ... (모든 열 및 계산), SUM (v.time_ended CASE - <5 THEN 1 ELSE 0 END v.time_started을) 항목에서 바운스 로 제가 = LEFT i.id o.item_id 에 쿠폰 등 참여함에 왼쪽 i.id = v.item_id의 v로 viewed_item INNER JOIN 가 a.id = i.area_id i.id 같은 영역에 가입 = 3 주문이 반송됩니다. 나는 '바운스'를 그룹화 할 수 없다고 말했다. – Jonnny

+1

그룹에서 이탈을 제거하려면 집계되지 않은 입력란 만 그룹화하십시오. 코드가 잘린 것처럼 보이므로 다른 문제가 있으면 그룹에서 바운스를 제거해도 문제가 해결되지 않으면 전체 코드를 추가하십시오. –

+0

Q 코드로 업데이트되었습니다. 감사합니다. – Jonnny