前提
MySQLに格納されているデータの取得方法について質問させて下さい。
格納データ
point | Name | registered_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文や、変数等を駆使すれば、こんな力業じゃなくても出来るのではと
思っているのですが、自分だけでは考え及ばず...
皆様のお知恵をお借り出来ないでしょうか。
回答1件
あなたの回答
tips
プレビュー