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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

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

Q&A

解決済

3回答

1616閲覧

SQL作成:複数のグループから一つづつ取得する

9nom

総合スコア42

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

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

0グッド

0クリップ

投稿2017/08/14 05:35

編集2017/08/14 06:39

複数のグループから一つずつ値を抽出したいときはどのようにすれば良いのでしょうか

例えば、地方ひとつづつから県名を取得するときなど(ただし、地方は被っては行けない)

<追記>
一つずつの取得方法は人口数降順です

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

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

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

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

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

guest

回答3

0

ベストアンサー

windows関数で県毎の人口数でランク付けしました、各県の1から順に取得する事ができます。

sql

1create temp table zenkoku (ken text, chihou text, jinkou int); 2 3SELECT ken, chihou, jinkou, 4 dense_rank() OVER (PARTITION BY ken ORDER BY jinkou DESC) 5FROM zenkoku order by 4, 3 DESC, 1

投稿2017/08/16 03:15

A.Ichi

総合スコア4070

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

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

sazi

2017/08/16 03:24 編集

地方は被ってはいけない、とありますから、group byは必要では? と、思いましたが、質問での構成が不明確だからの一案ですね。スルーしてください。m(__)m
guest

0

一つずつ値を抽出

の根拠がないとランダムな抽出になります。
なにか特定のカラムとリンクして取り出さないとSQL文としてはなりたちません

投稿2017/08/14 06:16

yambejp

総合スコア114829

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

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

9nom

2017/08/14 06:40

追記いたしました
yambejp

2017/08/14 06:57 編集

> 一つずつの取得方法は人口数降順です 地方ごとに人口数が一番多い県を抽出するということでしょうか? select 地方,県名 from テーブル t1 inner join (select 地方, max(人口数) 人口数 from テーブル group by 地方) t2 on t1.人口数=t2.人口数 and t1.地方=t2.地方 この場合、偶然人口数がぴったり同じ場合、2つの県が抽出されます どちらか1つだけ取り出したい場合はさらに絞り込む条件が必要です
guest

0

こんにちは。
グループ毎に一つということなので最小値で取り出す例を。※最大ならmax()
地方ごとの人口はグルーピングしても変わらないのでそれで昇順とします。
※人口が同数の場合のソート条件が不明なので、"地方"順としました。

SQL

1select "地方", min("値") from "テーブル" group by "地方","人口" order by "人口" desc, "地方"

具体的でないので、これくらいしか回答できないですけれど。

投稿2017/08/14 05:40

編集2017/08/14 10:36
sazi

総合スコア25188

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

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

9nom

2017/08/14 06:40

ご回答ありがとうございます!追記分を反映させるとどのようなSQLになりますでしょうか
sazi

2017/08/14 10:35

追記しました。条件を色々後出しするよりも要件(やりたいこと)をまとめて提示した方が回答も付きやすいですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問