>  기사  >  데이터 베이스  >  MySQL 날짜 형식으로 통계를 집계하는 방법은 무엇입니까?

MySQL 날짜 형식으로 통계를 집계하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2023-05-31 23:04:481089검색

    소개

    시간과 날짜는 일반적으로 그룹화 조건으로 사용되며 데이터 통계를 용이하게 하기 위해 실제 개발에서도 자주 사용됩니다. MySQL에서는 날짜 형식 지정 기능을 사용하여 날짜를 지정된 형식의 문자열로 변환한 다음 필요한 시간 단위에 따라 그룹 통계를 수행할 수 있습니다.

    준비

    시작하기 전에 테스트 데이터 테이블을 준비하고 후속 실험과 테스트를 용이하게 하기 위해 일부 데이터를 삽입해야 합니다.

    CREATE TABLE `test` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) DEFAULT NULL,
      `created_at` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    INSERT INTO `test` (`name`, `created_at`) VALUES
    ('test1', '2022-01-01 00:00:00'),
    ('test2', '2022-01-02 00:00:00'),
    ('test3', '2022-01-02 12:00:00'),
    ('test4', '2022-01-03 00:00:00'),
    ('test5', '2022-01-07 00:00:00'),
    ('test6', '2022-01-08 00:00:00'),
    ('test7', '2022-01-09 00:00:00'),
    ('test8', '2022-01-10 00:00:00'),
    ('test9', '2022-01-14 00:00:00'),
    ('test10', '2022-01-15 00:00:00'),
    ('test11', '2022-01-16 00:00:00'),
    ('test12', '2022-01-17 00:00:00'),
    ('test13', '2022-02-01 00:00:00'),
    ('test14', '2022-02-02 00:00:00'),
    ('test15', '2022-02-03 00:00:00'),
    ('test16', '2022-03-01 00:00:00'),
    ('test17', '2022-03-02 00:00:00'),
    ('test18', '2022-03-03 00:00:00'),
    ('test19', '2022-04-01 00:00:00'),
    ('test20', '2022-04-02 00:00:00'),
    ('test21', '2022-04-03 00:00:00'),
    ('test22', '2022-05-01 00:00:00'),
    ('test23', '2022-05-02 00:00:00'),
    ('test24', '2022-05-03 00:00:00');

    여기서 레코드 생성 시간을 나타내는 test 的测试表,包含三个字段 idnamecreated_at。其中 created_at라는 날짜/시간 유형 필드를 만듭니다. 2022년 1월부터 5월까지의 데이터를 포함한 일부 테스트 데이터를 삽입했습니다.

    구현 원칙

    날짜를 기준으로 그룹 통계를 수행해야 할 때 MySQL은 YEAR(), MONTH(), WEEK(), DAY(), HOUR() 등 이 함수는 날짜별로 데이터를 그룹화하고 해당 수량을 계산합니다.

    이 요구사항을 위해 날짜별로 그룹화하고 7일, 4주, 3개월 동안의 데이터를 계산하려고 합니다. 따라서 날짜 형식과 날짜 기능을 조합하여 사용해야 합니다.

    먼저 날짜를 해당 형식으로 지정해야 합니다. 날짜와 형식 ​​문자열이라는 두 가지 매개변수를 사용하는 DATE_FORMAT() 함수를 사용하여 이 작업을 수행할 수 있습니다. 날짜는 아래와 같이 "yyyy-MM-dd" 형식으로 지정할 수 있습니다. 예:

    SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_date FROM table_name;

    Practical Operation

    Count by day

    다음으로 날짜에 따라 수량을 그룹화하고 계산해야 합니다. 이는 GROUP BY 절과 해당 날짜 함수를 사용하여 달성할 수 있습니다. 예를 들어,

    SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_date, COUNT(*) AS count FROM table_name GROUP BY formatted_date;

    주별

    SELECT DATE_FORMAT(date_column, '%x-%v') AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;

    또는

    SELECT CONCAT(YEAR(date_column), '-', WEEK(date_column)) AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;`

    월별

    SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;

    또는

    SELECT CONCAT(YEAR(date_column), '-', MONTH(date_column)) AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;
    와 같이 날짜별로 그룹화된 일일 수량을 계산할 수 있습니다.

    위 내용은 MySQL 날짜 형식으로 통계를 집계하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제