タグ

sqlに関するsh2nm0k2のブックマーク (23)

  • サブクエリの書き方を2万文字弱かけてすべて解説する

    これはなに ども、レバテック開発部のもりたです。 今回はSQLのサブクエリについてまとめます。仕事でクエリを書く際、サブクエリは頻出の構文だと思うんですが、同時にサブクエリの書き方を完全に理解しているよという人は案外少ないのではないでしょうか?[1] 実際、MySQLの公式ドキュメントを見ると12ページくらいを割かれており、意外と奥深いのがサブクエリです。使いこなせると便利ですし、何よりちょっとSQLのコツみたいなのがわかって面白いよ、ということで記事にしてみました。 前提 この記事は以下の前提を含んでいます。 環境 MySQL8.0系 読者の知識 なんとなくサブクエリが書ける けど相関サブクエリとかになると「あーっ」つってGoogle meetを閉じてしまうくらいのレベル感 記事のボリューム 18,000文字 おれの卒論が20,000文字だった マサカリ 間違ってたら投げてくれ〜〜 それ

    サブクエリの書き方を2万文字弱かけてすべて解説する
  • 4 Ways to Join Only The First Row in SQL | Sisense

    Here's how to extract a list of users and their most recent widgets out of a users table and a widgets table, when each user has many widgets.

    4 Ways to Join Only The First Row in SQL | Sisense
  • Amazon Redshiftで良く使いそうな便利系SQLをまとめてみた | DevelopersIO

    Redshiftで色々環境構築や調査を進めて行くと、割とちょいちょい良く使うSQL等も出て来ます。そこでこのエントリでは、普段使っている便利系SQL、都度アクセスしてはコピペして使ってるようなSQL、更にはそれらにちょっと一手間加えたSQL等を集約し一覧としてみる事にしました。 必須なもの、また『これも使えるね』というようなものについては適宜追加更新を行っていこうと思ってますので、オススメのSQL文があれば是非教えて頂けると幸いです。 目次 S3からのCOPY処理エラーに関するログを確認する COPY処理時に出力させるエラー件数量を制御する 指定テーブルのテーブル定義を確認する(type1:psqlコマンドで簡易表示) 指定テーブルのテーブル定義を確認する(type2:distkey,sortkey等も表示) 指定テーブルのテーブル定義を確認する(type3:コメント文も併せて表示) テー

    Amazon Redshiftで良く使いそうな便利系SQLをまとめてみた | DevelopersIO
  • 社内SQL研修のために作った資料を公開します | 株式会社AI Shift

    こんにちは、Development Teamの三宅です。 先日、社内(AI事業部内)でSQL研修の講師を担当したので、今回はその内容について簡単に共有したいと思います。 はじめに 例年、AI事業部では、新卒エンジニアの育成のためにソフトウェアエンジニア研修を行っております。今年はフルリモートでの実施となりました。研修期間は2週間ほどで、内容は前半が講義、後半が実践(チーム開発)でした。私が担当したのは、講義パートの一部であるSQL研修です。SQLRDBにあまり慣れていない人でも、できるだけ体系的な学びが得られるようにすることを目標に、様々な資料をまとめて提供する方針で準備しました。結果的には、ハンズオン込みで4時間ほどのやや長い講義となりましたが、勉強になったという声も頂けたのでやって良かったと思っています。 研修資料 研修内容 SQL研修の内容は、基的には大学のデータベース講義で

    社内SQL研修のために作った資料を公開します | 株式会社AI Shift
  • Aggregate Functions | Snowflake Documentation

  • Optimizing and tuning queries in Amazon RDS PostgreSQL based on native and external tools | Amazon Web Services

    AWS Database Blog Optimizing and tuning queries in Amazon RDS PostgreSQL based on native and external tools January 2024: This post was reviewed and updated for accuracy. PostgreSQL is one of the most popular open-source relational database systems. The product of more than 30 years of development work, PostgreSQL has proven to be a highly reliable and robust database that can handle a large numbe

    Optimizing and tuning queries in Amazon RDS PostgreSQL based on native and external tools | Amazon Web Services
  • https://cloud.google.com/bigquery/sql-reference/query-syntax?hl=ja

    Send feedback Query syntax Stay organized with collections Save and categorize content based on your preferences. Query statements scan one or more tables or expressions and return the computed result rows. This topic describes the syntax for SQL queries in GoogleSQL for BigQuery. SQL syntax notation rules The GoogleSQL documentation commonly uses the following syntax notation rules: Square bracke

    https://cloud.google.com/bigquery/sql-reference/query-syntax?hl=ja
  • Amazon AthenaでELBログをSQLで解析する #reinvent | DevelopersIO

    西澤です。目新しさの無いエントリーですが、溜め込んだELBログを解析する必要があったので試してみることにしました。Amazon Athenaは東京リージョンでは使えないので、OregonリージョンのAthenaから、東京リージョンのS3バケットをデータソースとして検証しました。 と言ってもほぼ下記ページにやり方は詳しく載っていますので、公式ページを見ていただく形でも構いません。 Analyzing Data in S3 using Amazon Athena | AWS Big Data Blog Athenaでデータベースを作成する データベースエンジニアで無い担当者からすると、専用のSQLクライアントを用意すること無く、AWS Management Console上で全ての操作が完結するというのは大変嬉しいです。GUIで操作することもできますが、テーブルを作成するデータベースを先に別に

    Amazon AthenaでELBログをSQLで解析する #reinvent | DevelopersIO
  • 緯度・経度を用いて距離を算出するSQL - Qiita

    で、緯度:35.663729、経度:139.744047 の位置から これらの場所までの距離(km)を算出するには、以下のSQLを実行すれば良い。 select a.NAME , a.LATITUDE , a.LONGITUDE , ( 6371 * ACOS( COS(RADIANS(35.663729)) * COS(RADIANS(a.LATITUDE)) * COS(RADIANS(a.LONGITUDE) - RADIANS(139.744047)) + SIN(RADIANS(35.663729)) * SIN(RADIANS(a.LATITUDE)) ) ) as DISTANCE from position_test a;

    緯度・経度を用いて距離を算出するSQL - Qiita
  • SELECT basics - SQLZoo

    The example uses a WHERE clause to show the population of 'France'. Note that strings should be in 'single quotes'; Modify it to show the population of Germany

  • SQLのインデックスとそのチューニングについてのオンラインブック

    開発者向けのSQLインデックス解説サイト、管理についての間違いない知識を提供します。 インデックスは開発時には忘れられがちである一方で、非常に効果的なSQLのチューニング方法です。Use The Index, Lukeでは、HibernateなどのORMツールの解説にとどまらず、SQLのインデックスについて基礎から説明します。 Use The Index, LukeはSQLパフォーマンス詳解のWeb上の無料版です。サイトを気に入って頂けたら、ぜひ書籍も購入してみて下さい。また、このサイトの運営をサポートする様々なグッズも販売しています。 MySQLOracleSQL ServerなどにおけるSQLのインデックスUse The Index, Lukeでは、ベンダにとらわれないインデックスの説明を心がけています。製品特有の事柄については、以下のような表示をしています。 DB2Use The

    SQLのインデックスとそのチューニングについてのオンラインブック
  • RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita

    "Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に

    RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita
  • MongoDBの様なNoSQLに勢いがあるのは何故ですか?SQLと比べてどんな利点や欠点がありますか? - Quora

    回答 (3件中の1件目) ハイプサイクルという概念をGartnerグループが提唱してまして、様々な流行りスタリのサイクルを分析する標準的な方法となっています。 ハイプとは過度な期待や熱狂を意味する言葉です。一発屋芸人の人気のカーブみたいなもので、テツandトモみたいに安定する場合と、消えていくものがあります。芸人ではありませんがDA PUMPは一茶の人間性もありまして、次は厳しいけど定着すると思っています。 なんだかのトリガーで評価が上がり始め、ピークを迎える。その後評価が下がっていき、底を打つと少し上がって定着するという経過をたどるとしています。これと同じモデルで、流行りのハイテク...

    MongoDBの様なNoSQLに勢いがあるのは何故ですか?SQLと比べてどんな利点や欠点がありますか? - Quora
  • [SQL]データの縦持ち、横持ちを入れ替える | DevelopersIO

    はじめに 弊社のデータ分析案件において、RedshiftにてSQLを実行してデータを抽出することが増えてまいりました。SQLはデータの抽出には強力なのですが、JavaRubyなどのプログラミング言語と比べると独特であることも事実です。 例えば(PL/SQLなどは除いてですが) ループがない 変数に代入して次の処理に行くことができない メソッドやクラスに処理を分割できない などです。 これらの特徴からSQLでデータ抽出を行う為には、JavaRubyなどとは異なった手法を取る必要があります。そこで「JavaRubyとかでは・・・というやり方でやるのだけど、SQLではどうやるのだろう」というケースについて、シリーズ形式で何回かに分けて取り上げたいと思います。 尚、SQLの基的な構文(select、join、group byなど)については説明しません。またデータベースの種類に関わらず使用

    [SQL]データの縦持ち、横持ちを入れ替える | DevelopersIO
  • SQL分析関数をさらに深く追求してみよう

    連載はSQLの応用力を身に付けたいエンジニア向けに、さまざまなテクニックを紹介する。SQLの基構文は平易なものだが、実務で活用するには教科書的な記述を理解するだけでは不十分だ。連載は、著名なメールマガジン「おら!オラ! Oracle - どっぷり検証生活」を発行するインサイトテクノロジーコンサルタントを執筆陣に迎え、SQLのセンス向上に役立つ大技小技を紹介していく。(編集局) 今回も、前回「極めよう!分析関数によるSQL高速化計画」に引き続き、分析関数の中からウィンドウ関数とレポート関数を取り上げて説明します。 ウィンドウ関数を使った分析 それでは、ウィンドウ関数を利用して、分析してみましょう。ウィンドウ関数を使用して、累積集計、移動集計、集中集計を計算できます。今回は、ウィンドウ関数を簡単に理解してもらうために、累積集計について説明します。 ウィンドウ関数には、SUM()、AVG

    SQL分析関数をさらに深く追求してみよう
  • 大なり、小なり、BETWEENといったSQL範囲条件に対するインデックス

    INDEX RANGE SCANにおいて、パフォーマンスへの影響が最も大きいのは、リーフノードの走査です。インデックスをスキャンする範囲をできる限り小さく保つのは、インデックスを作る上での黄金則です。インデックスのスキャンがどこから始まってどこで終わるのか、自分に問いかけて確認しましょう。 SQL文内で、始点と終点の条件が明示的に書かれているなら、答えは簡単です。 SELECT first_name, last_name, date_of_birth FROM employees WHERE date_of_birth >= TO_DATE(?, 'YYYY-MM-DD') AND date_of_birth <= TO_DATE(?, 'YYYY-MM-DD')指定された範囲内で、DATE_OF_BIRTHのインデックスがスキャンされます。スキャンは、最初の日付から始まり、2番目の日付で

    大なり、小なり、BETWEENといったSQL範囲条件に対するインデックス
  • オトコのソートテクニック2008

    今日は仕事納めだったので、一年の締めくくりとしてMySQLにおけるソートの話でもしようと思う。 インデックスを利用しないクエリで最もよく見かけるもののひとつは、ORDER BYを用いたソート処理だろう。もし、ソート処理においてインデックスを用いることが出来れば、MySQLは結果を抽出してから結果行をソートするのではなく、インデックス順に行を取り出せば良いので高速にソート処理することが可能になる。特に、LIMIT句やWHERE句を用いて行の絞り込みを行う場合は効果が絶大である。しかし、ひとたびインデックスを利用できない状況に直面すると、たちまちテーブルスキャンが発生して性能が劣化してしまう。 例えば、100万行のレコードを格納したt1というテーブルがあるとする。そのテーブルに対して以下のようなクエリを実行した場合を考えよう。 mysql> SELECT col1, col2 ... colx

    オトコのソートテクニック2008
  • [SQL] 6. テーブルの結合 3

    6.2. 自己結合 自己結合とは同じテーブル同士の結合のことをいいます。結合は 2つ以上のテーブルに対して行われますが、それらが別のテーブルである必要はありません。自己結合は 2つのまったく同じテーブルの結合として実行されます。 テーブルの自己結合を行う際に問題なのは、テーブルの名前も列の名前も全て同じだという点です。これを解決するために、テーブルに一時的な名前を付けます。この一時的な名前のことをエイリアスといいます。範囲変数または相関変数とも呼びます。sample.17-3 は、商品表の単価が同じである商品名と単価を表示するものです。 -- sample.17-3 -- /* テーブルの結合 */ SELECT A.商品名,A.単価 FROM 商品表 A,商品表 B WHERE A.単価 = B.単価 AND A.商品コード <> B.商品コード ; /* 実行結果 */ 商品名 単価

  • Time-based SQL Injectionは意外に実用的だった

    このエントリでは、Time-based SQLインジェクション、すなわち時間差を利用したSQLインジェクションが意外に実用的だったという報告をします。デモ映像ありです。 はじめに Time-based SQL Injectionという攻撃があります。これはブラインドSQLインジェクションの一種で、ある条件の場合に一定時間(例えば5秒)スリープし、そうでない時との応答時間の差で情報を盗もうというものです。1回のHTTPリクエストで1ビットの情報が得られるので、それを積み重ねることによって、いくらでも情報を盗めるはずです…理論的には。 しかし、「理屈はそうでも、時間が掛かりすぎるよね」ということで、深くは追っかけていませんでした。SQLインジェクションの検査には有効でも、悪用としての実用性はあまりないと考えていたのです。 きっかけ きっかけは、以下のYahoo!知恵袋に以下の質問です。 SQL

    Time-based SQL Injectionは意外に実用的だった
    sh2nm0k2
    sh2nm0k2 2015/04/16
  • スロークエリの分析 — Let's Postgres

    NTT オープンソースソフトウェアセンタ 板垣 貴裕 スロークエリ (時間のかかるSQL) を発見するまでの手順を解説します。スロークエリ分析と改善は以下の流れで行うことになります。この記事では主に 1. のスロークエリの特定方法について解説します。2.については『スロークエリの改善』を参考にしてください。 どのSQLが遅いのかを見つける。 そのSQLがなぜ時間がかかるのかを判断する。 設定パラメータ、SQL、スキーマなどを改善する。 着目したSQLの性能を再測定し、2. から繰り返す。 着目したSQLのチューニングが完了したら、他のボトルネックを探すため 1. から繰り返す。 スロークエリの見つけ方 スロークエリを見つけるには、大きく分けて統計情報ビューを使う方法と、サーバログを使う方法の2つがあります。統計情報ビューを使う方法は PostgreSQL 8.4 以降でしか利用できませんが