반응형
MySQL 특정 달의 이전 날짜 이후의 모든 행을 선택합니다.
그래서 아이디어는 간단하지만 어떻게 해야 할지 모르겠고 온라인에서 유용한 정보를 찾지 못했습니다.
MariaDB를 사용하여 인터넷 데이터 사용량을 추적하도록 시스템을 설정했습니다.매달 13일에 리셋되는 데이터 상한선이 있습니다.그리고 현재 사이클의 모든 데이터 사용량을 표시할 수 있도록 하고 싶습니다.
MySQL에서 가능합니까? (그래파나를 사용하여 데이터를 표시합니다.)
편집: 죄송합니다. 테이블 스키마를 포함하지 않았습니다.
create table network.data_usage
(
time timestamp default current_timestamp() not null on update current_timestamp(),
mac varchar(32) not null,
download bigint default 0 not null,
upload bigint default 0 not null
);
분명히 시간 필드가 이 질문에 가장 관련이 있습니다.upload 필드 및 download 필드에는 이전 엔트리 이후 특정 MAC 주소의 입력/출력 총 바이트 수가 저장됩니다.
기본적으로 현재 날짜에 해당하는 달의 13일을 계산해야 합니다.이 달의 13일째에는, 다음의 URL로 이동합니다.
CURDATE() - INTERVAL DAY(CURDATE()) - 13 DAY
현재 날짜가 13보다 작으면 한 달만 빼면 됩니다.
CURDATE() - INTERVAL DAY(CURDATE()) - 13 DAY - INTERVAL IF(DAY(CURDATE()) < 13, 1, 0) MONTH
그것을 계산하면 다음과 같이 할 수 있습니다.SUM
모든.download
그리고.upload
날짜 이후의 값:
SELECT SUM(download) AS downloads,
SUM(upload) AS uploads,
SUM(download + upload) AS total
FROM data_usage
WHERE time >= CURDATE() - INTERVAL DAY(CURDATE()) - 13 DAY - INTERVAL IF(DAY(CURDATE()) < 13, 1, 0) MONTH
각각을 합산할 수도 있습니다.mac
를 사용하여 값을 매기다GROUP BY
예를 들어 다음과 같습니다.
SELECT mac,
SUM(download) AS downloads,
SUM(upload) AS uploads,
SUM(download + upload) AS total
FROM data_usage
WHERE time >= CURDATE() - INTERVAL DAY(CURDATE()) - 13 DAY - INTERVAL IF(DAY(CURDATE()) < 13, 1, 0) MONTH
GROUP BY mac
그룹화 기준의 경우mac
, 를 추가함으로써 합계 행을 생성할 수도 있습니다.WITH ROLLUP
에게GROUP BY
절:
SELECT COALESCE(mac, 'Total') AS mac,
SUM(download) AS downloads,
SUM(upload) AS uploads,
SUM(download + upload) AS total
FROM data_usage
WHERE time >= CURDATE() - INTERVAL DAY(CURDATE()) - 13 DAY - INTERVAL IF(DAY(CURDATE()) < 13, 1, 0) MONTH
GROUP BY mac WITH ROLLUP
언급URL : https://stackoverflow.com/questions/67101219/mysql-select-all-rows-since-the-previous-occurrence-of-a-certain-day-of-month
반응형
'source' 카테고리의 다른 글
Comparible 및 Comparator를 사용하는 경우 (0) | 2022.12.25 |
---|---|
unix socket을 통해 java와 mariaDB localhost를 연결하는 방법은 무엇입니까? (0) | 2022.12.25 |
AngularJS : 컨트롤러 기능에서 뷰를 전환하려면 어떻게 해야 합니까? (0) | 2022.12.25 |
"elseif"와 "else if"는 완전히 동의어입니까? (0) | 2022.12.25 |
SQL 선택 3시간 평균 (0) | 2022.12.25 |