entries
다음 열 이있는 테이블 이 있습니다 : id, email, sku, payment, created_at
항목에 대한 분석을 얻으려면 몇 가지 쿼리를 작성해야합니다. 하나로 결합하려는 두 가지 쿼리는 다음과 같습니다.
SELECT sku, count (email) AS total_current FROM items WHERE payment is not NULL AND created_at> = DATE_SUB (NOW (), INTERVAL 1 WEEK) GROUP BY sku ORDER BY sku ASC
과
SELECT sku, count (email) AS total_previous FROM items WHERE payment is NOT NULL AND created_at <DATE_SUB (NOW (), INTERVAL 1 WEEK) AND created_at> = DATE_SUB (NOW (), INTERVAL 2 WEEK) GROUP BY sku ORDER BY sku ASC
여기서 목표는 두 번째 열의 한 날짜 범위에 대한 각 SKU에 대한 레코드 수를 표시하는 3 개의 열이있는 결과 세트 1 개와 세 번째 열의 동일한 SKU에 대한 레코드 수를 표시하는 것입니다.
Sku (모든 항목이 그룹화 됨)
total_current (각 개별 SKU에 대한 첫 번째 쿼리의 날짜 범위에 속하는 레코드 수)
total_previous (각 개별 SKU에 대한 두 번째 쿼리의 날짜 범위에 속하는 레코드 수)
결과는 sku 오름차순으로 정렬되어야합니다.
UNION, JOIN 등을 사용하여 다양한 시도를 해봤지만 지금까지는 운이 없었습니다.
조건부 집계 를 사용 하여 두 쿼리를 결합 할 수 있습니다 .
SELECT sku,
count(CASE
WHEN created_at >= DATE_SUB(NOW(), INTERVAL 1 WEEK) THEN email
END) AS total_current,
count(CASE
WHEN created_at < DATE_SUB(NOW(), INTERVAL 1 WEEK) AND
created_at >= DATE_SUB(NOW(), INTERVAL 2 WEEK) THEN email
END) AS total_previous
FROM entries
WHERE payment IS NOT NULL AND
created_at >= DATE_SUB(NOW(), INTERVAL 2 WEEK)
GROUP BY sku
ORDER BY sku ASC
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다