質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

622閲覧

SQLで取得可能でしょうか??

riceCakeMochi

総合スコア10

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2023/01/05 12:34

前提

MySQLに格納されているデータの取得方法について質問させて下さい。

格納データ

pointNameregistered_at
3○○○2023-01-04 00:00:16
2■■■2023-01-04 00:00:16
1×××2023-01-04 00:00:16
3○○○2023-01-04 00:10:11
2×××2023-01-04 00:10:11
1■■■2023-01-04 00:10:11
3○○○2023-01-04 00:20:11
2■■■2023-01-04 00:20:11
1×××××2023-01-04 00:20:11
3■■■■■2023-01-04 00:30:12
2□□□2023-01-04 00:30:12
1○○○2023-01-04 00:30:12
3□□□2023-01-04 00:40:11
2□□□□□□2023-01-04 00:40:11
1×××××2023-01-04 00:40:11
3■■■■■2023-01-04 00:50:13
2□□□□□□2023-01-04 00:50:13
1○○○○○○2023-01-04 00:50:13
3■■■■■2023-01-04 01:00:14
2○○○○○○2023-01-04 01:00:14
1□□□□□□2023-01-04 01:00:14
3★★★2023-01-04 01:10:14
2○○○2023-01-04 01:10:14
1■■■■■2023-01-04 01:10:14

...

この様に、10分ごとに、ユーザのポイントを集計しています。

実現したいこと

1時間毎にポイントを取得した順にデータを取得しようとしております。

MySQL

1SELECT 2 SUM(point) as sumPoint , 3 name, 4 registered_at 5FROM 6 ranking 7WHERE 8 registered_at > '2023-01-04 00:00:00' AND registered_at <= '2023-01-04 01:00:00' 9GROUP BY name 10ORDER BY sumPoint DESC

自分の知識だと、上記のSQLを各時間毎に24個用意して、Unionで結合する方法しか
思いつきませんでした。

Loop文や、変数等を駆使すれば、こんな力業じゃなくても出来るのではと
思っているのですが、自分だけでは考え及ばず...

皆様のお知恵をお借り出来ないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuma.inaura

2023/01/05 12:52

質問タイトルは「MySQLで1時間単位の集計がしたい」など具体的にするのがおすすめですよ
guest

回答1

0

ベストアンサー

DATE_FORMATで時間単位に丸めてはいかがでしょう

sql

1SELECT 2 DATE_FORMAT(registered_at,'%Y-%m-%d %H:00:00') AS registered_hour, 3 SUM(point) AS total_point, 4 name 5FROM 6 points 7GROUP BY registered_hour, name 8ORDER BY registered_hour, total_point DESC

https://www.db-fiddle.com/f/ahTja79J2rM4v6qVeBtr3U/1

投稿2023/01/05 12:50

yuma.inaura

総合スコア1453

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

riceCakeMochi

2023/01/05 16:40

ありがとうございます!! ご教授頂いた方法で、やりたい事が実現出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問