MySQL で月ごとにグループ化

Preet Sanghavi 2023年1月3日
MySQL で月ごとにグループ化

このチュートリアルでは、MySQL データベースで月ごとに値をグループ化する方法を学習します。

企業や組織は、数か月間の購入または使用傾向に基づいて、ユーザーまたは顧客のデータを見つける必要があります。特定のビジネスは、ビジネスを後押しするのに最適な月を実現した場合、洞察に満ちたデータを推測する可能性があり、MySQL はこのタスクを支援します。

MySQL は、2つの主要な値を含む date_format() 関数を提供します。1つ目は検討中の列名で、2つ目はグループ化の期間です。

関数を設定したら、MySQL の GROUP BY 句を使用してさまざまな期間をグループ化できます。この操作の構文は次のとおりです。

select date_format(date_column, '%M'),sum(any_other_column)
from name_of_the_table
group by date_format(date_column, '%M');

この構文は、any_other_column の値を月ごとにグループ化することを前提としています。したがって、テーブル内の各月の特定の列の合計が表示されます。

このメソッドの動作を見てみましょう。

ただし、始める前に、いくつかの行を持つテーブル student_semester_date を作成して、ダミーのデータセットを作成しましょう。

-- create the table student_semester_date
CREATE TABLE student_semester_date(
  stu_id int,
  stu_date date, 
  stu_marks int
);

次に、以下のクエリを使用して、このテーブルにいくつかの行を挿入しましょう。

-- insert rows in the table student_semester_date
insert into student_semester_date(stu_id,stu_date,stu_marks)
     values(1,'2020-10-01',150),
     (2,'2020-10-10',100),
     (3,'2020-11-05',250),
     (4,'2020-11-15',150),
     (5,'2020-12-01',350),
     (6,'2020-12-21',250);

上記の 2つのクエリは、生徒の名前と名前の行を含むテーブルを作成します。

SELECT * FROM student_semester_date;

出力:

stu_id	stu_date	stu_marks
1		2020-10-01	150
2		2020-10-10	100
3		2020-11-05	250
4		2020-11-15	150
5		2020-12-01	350
6		2020-12-21	250

stu_date 列の月に基づいて、さまざまな学生のマークをグループ化してみましょう。基本的に、student_semester_date テーブルの各月の合計点数を数える必要があります。

MySQL で月ごとにグループ化

上記の構文を見たように、次のクエリを使用して、テーブル student_semester_date の月ごとにグループ化マークを操作できます。

select date_format(stu_date, '%M') as Month,sum(stu_marks) as total_marks
from student_semester_date
group by date_format(stu_date, '%M');

前述のコードは、student_semester_date テーブルの各月の合計点数を返します。

これは、11 月のテーブルに 250 と 150 のマークが付いた 2つのエントリがあるため、11 月の場合は 400 になることを意味します(250 + 150 = 400)。前述のクエリの出力は次のとおりです。

Month       total_marks
October		250
November	400
December	600
MySQL の AS キーワードで読みやすくするために、前述のコードではエイリアス Monthtotal_marks を使用しています。

したがって、date format() 関数と group by ステートメントを使用すると、MySQL の特定のテーブルの値を月ごとに効率的にグループ化できます。

著者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

関連記事 - MySQL Query