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

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

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

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

Q&A

解決済

1回答

403閲覧

SQLで集計する際にある項目の最小値で集計したい。

AkiraSonoda

総合スコア30

SQL

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

0グッド

0クリップ

投稿2022/07/28 06:05

編集2022/07/28 08:19

前提

テーブル構成は以下の通りです。

TABLE1作成

1CREATE TABLE TABLE1 ( 2code varchar(5) not null, 3receipt varchar(10) not null, 4branchNum int not null, 5name varchar(10) not null 6);

使用DB:Oracle 11g

TABLE1データ

1INSERT INTO TABLE1 (code, receipt, branchNum, name) VALUES ('1000', 'A001', 1, '田本'); 2INSERT INTO TABLE1 (code, receipt, branchNum, name) VALUES ('1000', 'A001', 2, '田中'); 3INSERT INTO TABLE1 (code, receipt, branchNum, name) VALUES ('1000', 'A001', 3, '山田'); 4INSERT INTO TABLE1 (code, receipt, branchNum, name) VALUES ('1000', 'B001', 1, '竹田'); 5INSERT INTO TABLE1 (code, receipt, branchNum, name) VALUES ('1000', 'B001', 2, '内田'); 6INSERT INTO TABLE1 (code, receipt, branchNum, name) VALUES ('2000', 'A001', 1, '田所'); 7INSERT INTO TABLE1 (code, receipt, branchNum, name) VALUES ('2000', 'C001', 1, '田井');

実現したいこと

code と receipt を軸に集計をし、branchNumが最小の値のみを抜き出したいです。

SELECTしたいデータ

1+------+--------+------------+------+ 2| code | receipt | branchNum | name | 3+------+--------+------------+------+ 4| 1000 | A001 | 1 | 田本 | 5| 1000 | B001 | 1 | 竹田 | 6| 2000 | A001 | 1 | 田所 | 7| 2000 | C001 | 1 | 田井 | 8+------+--------+------------+------+

試したこと

GROUP BYとMINを上手く使うのかと思っていますが上手くできていない状況です。
SQLが得意ではないためご教示いただきたいです。

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

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

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

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

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

m.ts10806

2022/07/28 06:11

念のため、環境情報として想定のDBとバージョンを質問本文に提示いただけますか? 若干ですが方言があり、ものによっては特有の機能を利用した方が良いこともあるので。
AkiraSonoda

2022/07/28 06:19

前提の項目に追記しました。よろしくお願いします。
guest

回答1

0

ベストアンサー

SQL

1select code,receipt,min(branchNum) as branchNum 2from TABLE1 3group by code,receipt

投稿2022/07/28 06:37

yambejp

総合スコア114839

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

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

AkiraSonoda

2022/07/28 07:30

ありがとうございます。 参考にさせていただきます。
yambejp

2022/07/29 05:28

> 項目を1つ追加 あ、見落としてました。こうです select * from table1 as t1 where not exists (select 1 from table1 where receipt=t1.receipt and code=t1.code and branchNum<t1.branchNum)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問