mysql
일간
SELECT AVG('평균값을 구할 컬럼명')
FROM '테이블명'
WHERE '날자 컬럼명' BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE()
GROUP BY DAY('날자 컬럼명')
ORDER BY '날자 컬럼명' ASC
주간
SELECT AVG('평균값을 구할 컬럼명')
FROM '테이블명'
WHERE '날자 컬럼명' BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 WEEK) AND CURDATE()
GROUP BY WEEK('날자 컬럼명')
ORDER BY '날자 컬럼명' ASC
//시작일은 그 주의 일요일 날자로 되어짐.
월간
SELECT AVG('평균값을 구할 컬럼명')
FROM '테이블명'
WHERE '날자 컬럼명' BETWEEN DATE_SUB(CURDATE(), INTERVAL 12 MONTH) AND CURDATE()
GROUP BY MONTH('날자 컬럼명')
ORDER BY '날자 컬럼명' ASC
//시작일은 그 달의 1일 날자로 되어짐.년간
SELECT AVG('평균값을 구할 컬럼명')
FROM '테이블명'
WHERE '날자 컬럼명' BETWEEN DATE_SUB(CURDATE(), INTERVAL 12 YEAR) AND CURDATE()
GROUP BY YEAR('날자 컬럼명')
ORDER BY '날자 컬럼명' ASC
간단히 설명을 하자면 AVG라는 함수를 이용하여 평균값을 구하는데 어떤 평균값인가는 GROUP BY로 묶은 것을 평균값을 계산 하는 방식이다. 이걸 날자를 이용해 일자별 또는 주간별 평균값을 내기 위해 BETWEEN 과 DATE_SUB 함수를 이용하여 날자를 계산하는 방식이다.
DATE_SUB(CURDATE(), INTERVAL '숫자' DAY)
여기서 CURDATE()는 오늘 날자 즉 지금 날자를 보여주는 함수 이고
INTERVAL '숫자' DAY는 CURDATE()로 부터 언제까지 보여줄 것인지를 말하는 함수 이다.
즉,
BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 WEEK) AND CURDATE()
위 함수는 오늘 날자로 부터 30일 전까지의 데이터를 보고 싶다는 뜻이다.
PHP
$sql = "
SELECT AVG('평균값을 구할 컬럼명') as `불러올 이름`
FROM '테이블명'
WHERE '날자 컬럼명' BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE()
GROUP BY DAY('날자 컬럼명')
ORDER BY '날자 컬럼명' ASC
";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
echo $row['불러올 이름'];
}
검색 기능작업시 유용한 쿼리 (0) | 2019.06.25 |
---|---|
mysql 필드내 문자 바꾸기 (0) | 2015.04.18 |
댓글 영역