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

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

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

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

2回答

2343閲覧

OracleSQLでSUMをMAXで取るSELECT文を作成したい

crsm

総合スコア1

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2021/10/08 16:47

したいこと

一年間の期間内で、時間帯別(24h)の合計値を一日ずつ取り、その最大値を導くSELECT文を作成したいです。
trunc関数などを調べましたが、合計値の集合から最大値を取る書き方が分かりません。

SELECT MAX() FROM A WHERE (時間帯別のSUM群)

みたいな感じでSELECT文って作成できないのでしょうか。
初心者で調べ方も合っているか分からず、欲しいSQL文にたどり着けませんでした。
お手数ですがどなたかお願いいたします。

※日付や時間はDATE型ではなく、数値型を想定しています。

よろしければ以下のテーブル、カラム名でお願い致します

SQL

1/* 2table = テーブル名 3count_mem = 人数(数値型) 4date8 = 年月日(数値型8桁) 5time6 = 時間分秒(数値型6桁) 6*/

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

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

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

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

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

sazi

2021/10/09 07:14

時間帯別(24h)とはどのようなものですか? 「一日ずつ取り」とありますけど年月日(date8)単位で集計した物とは違うんでしょうか?
crsm

2021/10/09 08:25

time6で「093012(9時30分12秒)」みたいな形を想定しています。 ここでいう時間帯別とは、090000~100000で一時間とみて、それを24時間分取りたいという意味です。 WHERE date8 BETWEEN 20201001 AND 20210930 AND time6 BETWEEN 090000 AND 100000 で一年間の中の該当の一時間を取ろうとしています。 この一時間の合計人数を一日ずつ取り、それが一年のうち最大の日をSELECTしたいです。 言葉足らずで申し訳ございません。
guest

回答2

0

ベストアンサー

1時間毎の人数計についての、年毎の最大値

SQL

1select trunc(date8, -4) year4, max(hour_count_mem) 2from ( 3 select date8, trunc(time6, -4) hour2, sum(count_mem) hour_count_mem 4 from tbl 5 group by date8, trunc(time6, -4) 6) 7group by trunc(date8, -4)

投稿2021/10/09 12:44

sazi

総合スコア25206

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

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

0

※日付や時間はDATE型ではなく、数値型を想定しています。

悔い改めて、DATE型に変更することを強く勧めます。

日時ファンクション TRUNC (日付) を使って GROUP BYで日付毎に取得するのがヒント。

テーブル定義はCREATE TABLE文で、データも数件で良いからINSERT文で提示する習慣を身に着けてください。

table = テーブル名

予約語はテーブル名などには使えません。お約束事です。
Oracle SQLの予約語とキーワード

投稿2021/10/08 17:08

Orlofsky

総合スコア16415

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

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

crsm

2021/10/08 18:28

コメントありがとうございます。 かしこまりました。 DATE型でやり直すように致します。 また分からないことがあればコメントさせていただいてもよろしいでしょうか。 テーブル定義については失礼しました。 次回以降はより伝わりやすいようにINSERT文を用意して質問するように致します。
Orlofsky

2021/10/08 21:53

質問は修正できます。直す気がなければ無視します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問