2014-04-28 2 views
0

추가 된 총 상점 수를 1에서 90 일까지 가져 오려고합니다. 7 일, 14 일, 30 일, 60 일 및 90 일 동안 추가 된 상점 수를 표시하려고합니다. 1 count 쿼리를 사용하여이 모든 것을 가져 오려고합니다. 다음 쿼리를 사용하고 있습니다. 이 방법으로 쿼리를 사용하면 쿼리를 여러 번 작성해야합니다.여러 날짜의 데이터를 가져 오는 단일 쿼리

SEELCT COUNT(storeid) AS totalStores FROM example 
WHERE DATEDIFF(CURDATE(), date_created) 
+1

그냥 'UNION'을 사용하여 SQL 쿼리를 하나의 거대한 SQL 쿼리로 결합하십시오. 요약 테이블을 작성하거나 데이터베이스 스키마를 완전히 다시 보지 않는 한이 쿼리를 최적화 할 방법이 없습니다. – ProfileTwist

답변

1

당신은 피벗으로 그것을 할 수 : 깔끔하게 계산 그래서 조건을 합산, (MySQL의에서)

SELECT 
    sum(days <= 7) AS total7, 
    sum(days <= 14) AS total14, 
    sum(days <= 30) AS total30, 
    sum(days <= 60) AS total60, 
    sum(days <= 90) AS total90 
FROM (
    SELECT DATEDIFF(CURDATE(), date_created) as days 
    FROM example 
) x 

sum(condition) 구문 작품 1, 거짓은 0입니다 사실 때문에 얼마나 많은 시간을 진정한 .

하위 쿼리는 코드를 읽기 쉽게 만들고 약간의 성능을 추가하는 데 사용됩니다 (datediff()에 대한 호출은 행당 한 번만 수행됨).

관련 문제