質問編集履歴

1 誤字の修正

kanie_nishi

kanie_nishi score 6

2018/10/15 00:45  投稿

Postgresql で 0が取得されたとき、(0が連なる前は連なる前の値)その前のレコードをの値を取得するには
Postgresql で 0が取得されたとき(0が連番の場合は連なる前の値),0が入る直前のレコードをの値を取得するには
### Postgresql で 0が取得されたとき、(0が連なる前は連なる前の値)その前のレコードをの値を取得するには
### Postgresql で 0が取得されたとき(0が連番の場合は連なる前の値),0が入る直前のレコードをの値を取得するには
### 該当のソースコード
```SQL
SELECT
 no,
 SUM(coalesce(uu,0)) AS uu
FROM
(
 select * from (values (1,100),(2,300),(3,0),(4,0),(5,650),(6,0),(7,50),(8,0),(9,0),(10,0),(11,123))AS t(no,uu)
)t1
GROUP BY no
```
### 試したこと
上記のクエリの外側にlag関数、last_value を使いましたがもう一工夫必要だと思いました。
一つ前の数値を取得するまではできましたが、連番だと対応できなかったです。
  • PostgreSQL

    1604 questions

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

  • SQL

    3540 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る