반응형
단일 쿼리를 사용하여 여러 날짜 간격당 항목 수 가져오기
SELECT COUNT(*) FROM `table` WHERE `datetime` > SUBDATE(NOW(), INTERVAL 1 DAY)
이것은 마지막 날 동안 엔트리의 수를 가져옵니다.단, 이 쿼리의 변동을 여러 번 송신하지 않고 여러 인터벌의 엔트리 수를 취득할 수 있습니까?INTERVAL 1 DAY
,INTERVAL 1 WEEK
,INTERVAL 1 MONTH
, ...)?
그러기 위해서는 표현이 필요합니다.
SELECT
COUNT(CASE WHEN DATE(`datetime`) >= CURDATE() - INTERVAL 1 DAY AND DATE(`datetime`) < CURDATE() THEN 1 END) AS lastDay,
COUNT(CASE WHEN DATE(`datetime`) >= CURDATE() - INTERVAL 7 DAY AND DATE(`datetime`) < CURDATE() THEN 1 END ) AS lastSevenDays,
COUNT(*) AS lastThirtyDays
FROM `table`
WHERE
DATE(`datetime`) >= CURDATE() - INTERVAL 30 DAY
주의: 마지막 날, 마지막 7일 및 마지막 30일의 결과를 얻으려면 이 쿼리를 사용합니다.
편집:
인덱스가 있는 경우datetime
그러면 위의 쿼리는 해당 인덱스를 사용하지 못합니다.아래 제공된 쿼리를 사용하여 다음 인덱스를 활용하십시오.datetime
.
SELECT
COUNT(CASE WHEN DATE(`datetime`) >= CURDATE() - INTERVAL 1 DAY AND DATE(`datetime`) < CURDATE() THEN 1 END) AS lastDay,
COUNT(CASE WHEN DATE(`datetime`) >= CURDATE() - INTERVAL 7 DAY AND DATE(`datetime`) < CURDATE() THEN 1 END ) AS lastSevenDays,
COUNT(*) AS lastThirtyDays
FROM `table`
WHERE
`datetime` >= (NOW() - INTERVAL 30 DAY - INTERVAL HOUR(NOW()) HOUR - INTERVAL MINUTE(NOW()) MINUTE - INTERVAL SECOND(NOW()) SECOND)
언급URL : https://stackoverflow.com/questions/38691480/get-number-of-entries-per-multiple-date-intervals-using-single-query
반응형
'programing' 카테고리의 다른 글
jQuery를 사용하여 이미지 원본 변경 (0) | 2022.09.25 |
---|---|
부울 모드의 MySQL FullText: 문자열의 일부로 '+'가 포함된 키워드 검색 (0) | 2022.09.25 |
레이아웃 할당 시 오류: BoxLayout을 공유할 수 없습니다. (0) | 2022.09.25 |
jar 파일을 실행하는 동안 매니페스트 기본 특성 예외에 대한 서명 파일 다이제스트가 잘못되었습니다. (0) | 2022.09.25 |
MySQL에서 잠금을 유발하지 않고 선택할 수 있는 방법이 있습니까? (0) | 2022.09.25 |