이 제목이 이해가되지 않는다면 제안 해주십시오!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
좋아, 나는 시도 : 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
그룹에서 이탈을 제거하려면 집계되지 않은 입력란 만 그룹화하십시오. 코드가 잘린 것처럼 보이므로 다른 문제가 있으면 그룹에서 바운스를 제거해도 문제가 해결되지 않으면 전체 코드를 추가하십시오. –
Q 코드로 업데이트되었습니다. 감사합니다. – Jonnny