タグ

sqlとtipsに関するshimookaのブックマーク (3)

  • PostgreSQLウィンドウ関数のTips | POSTD

    大変そうに見えるが簡単 ウィンドウ関数を使用するためには、OVER()句で”ウィンドウ関数の構文”を用いる必要があります。サンプルテーブルを作成し、それを使って全てのウィンドウ関数に対する例を挙げてみましょう。 この例では、14名の学生が居るクラスを管理しています。 -- Creating the table CREATE TEMP TABLE students ( id serial, name text, grade int DEFAULT NULL, last_seen_in_class date ); -- Adding some students INSERT INTO students (name, grade, last_seen_in_class) VALUES ('Jacob', '9', '2014-08-16'), ('Michael', '6', '2014-08-

    PostgreSQLウィンドウ関数のTips | POSTD
  • EXISTSとSQLの高速化について - 猫好きモバイルアプリケーション開発者記録

    SQL高速化についてはいろんなサイトで取り上げられているので 今更取り上げる必要はないかと思っていましたが、 ふと最近仕事をしている中でハマっている人が多いポイントであると感じたため 改めて書いてみることにしました。 EXISTSが速いという誤解 EXISTSについて書かれたサイトを見ると、 「速い」というような記述を見かけることが多いかと思います。 しかし、これはあくまでサブクエリを組んだ場合に、INやイコールを使って比較するときと比べて速い場合が多いというだけであり、 EXISTSが速いというわけでは決してありません。 ハッキリ言ってしまうと、EXISTSを使うクエリは基的に遅いです。 これは正確に言うと、EXISTSを利用するケースにおいて相関サブクエリが使われていることが原因で遅くなっています。 相関サブクエリとはどういうものか、以下にメンバー情報を格納した MEMBER テーブ

  • PostgreSQLの分析関数の衝撃(8) ――RowsとRangeの代用

    はじめに 連載では、分析関数の衝撃シリーズを、PostgreSQL用にアレンジした内容と、OracleDB2の分析関数をPostgreSQL 8.4で代用する方法を扱います。稿では、PostgreSQL 8.4でOracleの分析関数のRows指定やRange指定と同じ結果を取得するSQLを扱います。 対象読者 PostgreSQLでwindow関数を使ってみたい方 分析関数の理解を深めたい方 必要な環境 稿で扱うSQLは、PostgreSQL 8.4 beta2で動作確認しました。その他、次の環境でも応用が可能です。 Oracle DB2 SQL Server 1. Rows 2 Preceding 『PostgreSQLの分析関数の衝撃2』の「5. 移動累計を求める」では、PostgreSQL 8.4では文法エラーになるRows 2 precedingなsumを代用する方法を扱

    PostgreSQLの分析関数の衝撃(8) ――RowsとRangeの代用
  • 1