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
AS
キーワードで読みやすくするために、前述のコードではエイリアス Month
と total_marks
を使用しています。したがって、date format()
関数と group by
ステートメントを使用すると、MySQL の特定のテーブルの値を月ごとに効率的にグループ化できます。