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

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

解決済

2回答

1045閲覧

都道府県ごとに、人口多い市区町村を上位10ずつ抽出するクエリ

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/09/17 07:31

都道府県ごとに、人口多い市区町村を上位10ずつ抽出するクエリを書きたいです。
イメージだと、

東京都 渋谷区
東京都 千代田区

神奈川県 横浜市

のように各都道府県10づつ縦につながっていくイメージです
ひたすらUNION ALLするしかないのでしょうか

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/09/17 07:57

テーブルの定義を提示してください。
sazi

2017/09/17 10:10

ひたすらUNIONするしかないと言われているSQLを、出だし部分だけでも追加して下さい。
guest

回答2

0

ベストアンサー

テーブルは想定です。window関数を使って作成してみました。

sql

1create temp table 都道府県テーブル (都道府県 text, 市区町村 text, 人口 int); 2 3SELECT * FROM 4 (SELECT 都道府県, 市区町村, 人口, rank() OVER (PARTITION BY 都道府県 ORDER BY 人口 DESC) FROM 都道府県テーブル) T1 5 WHERE rank<=10 ORDER BY 1,4;

投稿2017/09/17 15:42

編集2017/09/19 08:59
A.Ichi

総合スコア4070

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

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

0

検証はしていませんが、都道府県コード49の沖縄県での10間抽出は、自テーブルとの比較で順位付けして

SQL

1SELECT TBL1.都道府県コード, TBL1.市町村コード, TBL1.人口, COUNT(*) AS COUNT FROM (SELECT * FROM 人口テーブル WHERE 都道府県コード= 49) AS TBL1, (SELECT * FROM 人口テーブル WHERE 都道府県コード= 49) AS TBL2 WHERE TBL1.都道府県コード = TBL2.都道府県コード AND TBL1.人口 < TBL2.人口 AND COUNT < 10 ORDER BY TBL1.都道府県コード, TBL1.人口

といったコードでしょう。
そこに都道府県コード(エイリアス PCD)のりストをIN句で関わららせて、全都道府県で行えばできるのでしょう。

SQL

1IN (SELECT 都道府県コード AS PCD FROM 人口テーブル)

断片的なヒントで済みません。

投稿2017/09/17 11:33

seastar3

総合スコア2285

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問