-1
한 달 동안 단일 쿼리를 수행하려고합니다.MySQL 롤링 값 - 조인 된 값이있는 하위 쿼리
SELECT AVG(days)
FROM (SELECT datediff(IF(MIN(date_end) = '0000-00-00', DATE(NOW()), MAX(date_end)), MIN(date_start)) AS days
FROM tenancies
WHERE deleted_at IS NULL AND date_start < DATE_SUB(NOW(), INTERVAL 1 MONTH)
GROUP BY tenancies.tenant_id)
나는 날짜 NOW()
을 대체 할 :이 작업 쿼리입니다.
SELECT calendar_date
FROM calendar_dates
WHERE calendar_date BETWEEN NOW() - INTERVAL 1 MONTH AND NOW()
이 나에게 내가 원하는 모든 날짜를 가져옵니다
나는 다른 쿼리가 있습니다.
SELECT calendar_date, (SELECT AVG(days)
FROM (SELECT datediff(IF(MIN(date_end) = '0000-00-00', DATE(calendar_date), MAX(date_end)), MIN(date_start)) AS days
FROM tenancies
WHERE deleted_at IS NULL AND date_start < DATE_SUB(calendar_date, INTERVAL 1 MONTH)
GROUP BY tenancies.tenant_id) d) AS days
FROM calendar_dates
WHERE calendar_date BETWEEN NOW() - INTERVAL 1 MONTH AND NOW()
누구나 어떤 제안이 : 나는 두 하위 쿼리를 수행하려고 할 경우에는이 calendar_date
인식하지 못하는 이유는 무엇입니까?
귀하의 테이블 스키마를 추가하면 귀하의 질문이 명확해질 것이라고 생각합니다. 귀하의 검색어는 완전히 다른 방식으로 다시 작성해야한다고 생각합니다. 사실 나는 당신이 필드의 위치와 calendar_dates와 tenancies의 외래 키에 따라 다른 방법으로 테이블을 조인 할 필요가 있다고 생각한다. –
http://meta.stackoverflow.com/questions/333952/why-should-i-provide- 매우 단순한 SQL 쿼리 인 an-mcve-for-what-to-me-to-be-a-ave – Strawberry