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

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に必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Amazon Redshift

Amazon Redshiftは、Amazon社が提供する 高速かつ完全マネージド型でペタバイト規模の クラウドデータウェアハウスサービスです。

Q&A

1回答

511閲覧

User_id別に購入数の集計を行い、購入数の間隔別(10ずつ)にuser_idのcount数を取得したいです

kawagu2020

総合スコア4

PostgreSQL

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

SQL

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

Amazon Redshift

Amazon Redshiftは、Amazon社が提供する 高速かつ完全マネージド型でペタバイト規模の クラウドデータウェアハウスサービスです。

0グッド

0クリップ

投稿2020/02/02 04:28

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
PostgreSQL 10.5を使用して、以下の集計を行いたいと考えております。
・User_id別に購入数の集計を行い、購入数の間隔別(10ずつ)にuser_idのcountを行いたいです。
またRedShiftでも同様の集計を行いたいと考えております。

集計対象データ内容:テーブル名_sampleData

user_id購入数
15
353
1622
7836
376105
6870384
879658
~~~~

※データのレコード数は仮で1000としています。

出力イメージは、

購入数user_id_cnt
1~1045
11~2021
21~3013
31~4036
~~~~
101~1105
~~~~
521~53010

試したこと

SQL

1select 2 user_id 3 , 購入数 4 , case 5 when 購入数 = 0 then '0' 6 when 購入数 between 1 and 10 then '1~10' 7 when 購入数 between 11 and 20 then '11~20' 8 end "購入数の幅" 9from sampleData 10 11上記の様にcase式で判断すれば良いかと思いやってみましたが、 12条件式を100個以上入れるのは厳しいのでAccessのPartition関数 13のようなものを探したのですが、見つからず困っております・・・。

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

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

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

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

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

amura

2020/02/04 03:42

購入数が発生しないレンジは0表示されない様なきがしますが、抜けて良い?
guest

回答1

0

とび番レンジが有っても良い事にして

sql

1select 2case when rang = 0 then '0' 3else trim(to_char((rang * 10 - 9), '9999999999')) || '~' || trim(to_char((rang * 10), '9999999999')) 4end, cnt 5from (select count(user_id) cnt, ceil( salec / 10.0 ) rang from tblA group by rang) t1 6order by rang;

window関数が使えそうですけれど取り合えず自力で

投稿2020/02/04 04:23

編集2020/02/04 09:01
amura

総合スコア333

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問