ray88’s diary

お仕事で困ったとき用の自分用の覚書

2023-09-01から1ヶ月間の記事一覧

SQL指南書 外部結合⑩ 完全外部結合とMERGE文

SQL 指南書集 目次 - ray88’s diary ■完全外部結合とマージ文テーブル作成SQL /* 完全外部結合 */ CREATE TABLE Class_A (id char(1), name varchar(30), PRIMARY KEY(id)); CREATE TABLE Class_B (id char(1), name varchar(30), PRIMARY KEY(id)); INSERT …

SQL指南書 外部結合 まとめ

SQL 指南書集 目次 - ray88’s diary 1.SQLは帳票作成のための言語ではないので、基本的にフォーマット整形には不向き 2.必要に迫られたときは外部結合やCASE式を駆使して乗り切る 3.入れ子の表側を作成するときはマスタの直積を作ってから結合一発でキ…

SQL指南書 外部結合⑨ 商集合(関係除算)

SQL 指南書集 目次 - ray88’s diary SQL指南書 HAVING句⑤ 関係徐算でバスケット解析 - ray88’s diary ■例題 「item」テーブルのすべての商品を揃えている店舗を「shopitems」テーブルから選択する STEP1:ShopItemテーブルからshop列の重複を取り除いたテーブ…

SQL指南書 外部結合⑧ 完全外部結合で排他的和集合を求める

■集合AとBの排他的集合を考える 完全外部結合を使用し、NULL条件で抽出する /* 完全外部結合で排他的和集合を求める(p.98) */ SELECT COALESCE(A.id, B.id) AS id, COALESCE(A.name , B.name ) AS name FROM Class_A A FULL OUTER JOIN Class_B B ON A.id = …

SQL指南書 外部結合⑦ 外部結合で差集合を求める

SQL 指南書集 目次 - ray88’s diary ■外部結合で差集合を求める A- B /* 外部結合で差集合を求める:A-B(p.97) */ SELECT A.id AS id, A.name AS A_name FROM Class_A A LEFT OUTER JOIN Class_B B ON A.id = B.id WHERE B.name IS NULL; ■外部結合で差集…

SQL指南書 外部結合⑥ 完全外部結合

SQL 指南書集 目次 - ray88’s diary ■SQLでは以下3種類の外部結合の構文が定義されている 1.左外部結合(LEFT OUTER JOIN) 2.右外部結合(RIGHT OUTER JOIN) 3.完全外部結合(FULL OUTER JOIN)※左外部結合と右外部結合に機能的な差はない マスタに…

SQL指南書 補足 結合を掛け算として考える

SQL 指南書集 目次 - ray88’s diary SQL指南書 外部結合⑤ 掛け算として結合 まず、結合の基本を理解しましょう。結合は、2つのテーブル間で特定の条件(通常は2つのカラムの値が一致すること)を満たすすべての行の組み合わせを生成します。 **CROSS JOIN(…

SQL指南書 補足 主キーとインデックス

インデックスとは?インデックスは、データベースのテーブルの特定の列のデータを高速に検索・アクセスするためのデータ構造です。本の索引のように、特定の情報を素早く見つけるためのものと考えるとわかりやすいです。 主キーとインデックスの関係テーブル…

SQL指南書 外部結合⑤ 掛け算として結合

SQL 指南書集 目次 - ray88’s diary ■例題 次のような商品マスタ「items」と、商品の売り上げ履歴を管理するテーブル「SalesHistory」を使用し、商品ごとに総計でいくつ売れたかを調べる帳票を出力する■解答例1 STEP1:売り上げ履歴管理テーブル「SalesHist…

SQL指南書 補足 直積とは

SQL 指南書集 目次 - ray88’s diary SQL指南書 外部結合で行列変換③ クロス表で入れ子の表側を作る - ray88’s diary ■直積とは 想像してみてください。あなたがアイスクリーム屋さんに行ったとします。このお店には2つの味のアイスクリームがあります。それ…

SQL指南書 外部結合で行列変換③ クロス表で入れ子の表側を作る

SQL 指南書集 目次 - ray88’s diary ■統計表の作成業務では表題や表頭を入れ子にした表を作りたいという要望が発生する■例題:県別・年齢階級別・性別の人口データを保持する「TblPop」から次のようなクロス表を作成する ■誤ったSQL文の例 【考え方】 STEP1…

SQL ソート用の列を非表示にして出力する

■以下のようなテーブルを列持ち→行持ちの値に変換した後、「employee」列を氏名順にソートする。 ※SQLサーバはフリガナのない漢字に対してはきれいにソートはかからないことが多い。 そのため、漢字にソートをかけるためには「フリガナ列」を設けてフリガナ…

PostgreSQL コマンドでデータベース一覧を表示する

PostgreSQL 目次 - ray88’s diary

PostgreSQL psqlでデータベースを作成する

PostgreSQL 目次 - ray88’s diary ※照合順等LOCALEを違うものにして作成したい場合、template0を使用してDB作成する ■psqlを立ち上げてパスワード入力が表示されるまで何も入力せずにEnterキーで進み、パスワード入力が表示されたらパスワードを入力してEnte…

PostgreSQL コマンドプロンプトで接続して選択可能ロケールを表示

PostgreSQL 目次 - ray88’s diary 【参考URL】 PostgreSQL | PostgreSQLへの接続と切断 日本語のソート | PostgreSQL | 備忘録的プログラミングリファレンス ■PostgreSQLに接続する psql -h ホスト名 -p ポート番号 -U ロール名 -d データベース名 psql -h l…

外部結合で行列変換② (列→行):繰り返し項目を1列にまとめる UNION ALL

SQL 指南書集 目次 - ray88’s diary SQL ソート用の列を非表示にして出力する - ray88’s diary ■例題1:以下のようなテーブルを列持ち→行持ちへ変換する 【考え方】 STEP1:以下のようにpersonnel1~3の3つのテーブルを作成する STEP2:作成した3つのテ…

外部結合で行列変換① (行→列):クロス表を作る

[SQL 指南書集 目次 - ray88’s diary ■CASE式でクエリ結果をクロス表にする方法があるが、同じことを外部結合的な発想で実現する【例題】 以下のように、社員が受講した研修コースを管理するテーブルを行列変換する ■解答例1:外部結合の利用 ※解答1のSQL…

SQL指南書 HAVING句⑥ まとめ

SQL 指南書集 目次 - ray88’s diary1.テーブルはファイルではない。行も順序も持たない。 そのため、SQLではソートを記述しない2.SQLは手続き型言語ではなので、ループ、分岐、代入を行わない。3.代わりにSQLは、求める集合に辿り着くまで次々に集合を…

SQL 内部結合と外部結合の違い

JOIN操作には主に以下の2つの大きなカテゴリがあります。■INNER JOIN(内部結合): INNER JOIN 2つのテーブルから一致する行のみを結合します。つまり、共通のキーを持つ行だけが結合されます。■OUTER JOIN(外部結合): OUTER JOIN 左側のテーブルのすべて…

SQL 数値型から日付型への変換②

SQL文の中で、LPAD という関数を使用しています。これは左側に特定の文字を埋めるための関数です。month が1桁の場合(例: 4月)、LPAD を使用して 04 という2桁の形式に変換します。その後、year と month を連結して日付形式に変換しています。 ■PostgreSQ…

SQL 文字型から日付型への変換①

■文字型でYYYY-MMの形式を日付型へ変換 ■PostgreSQLの場合 SELECT section1, section2, to_date(month, 'YYYY-MM') as converted_month, SUM(amount) as total_amount FROM workexpenses WHERE (section1 = 'C' AND section2 IN ('Z', 'Y', 'X')) GROUP BY s…

PostgreSQL カラム名にダブルクォーテーションが必要になる場合

PostgreSQL 目次 PostgreSQLでは、以下のような状況でカラム名やテーブル名をダブルクォートで囲む必要があります: 1. **予約語との衝突**:前述の通り、カラム名やテーブル名がPostgreSQLの予約語と衝突する場合にはダブルクォートが必要です。例:`user`,…

SQL指南書 HAVING句⑤ 関係徐算でバスケット解析

SQL 指南書集 目次 - ray88’s diary SQL指南書 外部結合⑨ 商集合(関係除算) - ray88’s diary ■バスケット解析 ・データマイニングの技術の一種で商品やアイテムが一緒に購入される傾向を分析する手法 ・様々な業務に以下なような用途でもバスケット手法が…

SQL指南書 HAVING句④ NULLを含まない集合を探す

SQL 指南書集 目次 - ray88’s diary ■COUNT(*)とCOUNT(列名)の違い ・COUNT関数の使用法にはCOUNT(*)とCOUNT(列名)がある ・COUNT(*) はNULLを数えるのに対し、 COUNT(列名)は他の集計関数と同様に NULL除外して集計する ※つまり、COUNT(*)は全行を数えるの…

SQL指南書 HAVING句③の補足(SQL文詳細解説)

SQL 指南書集 目次 - ray88’s diary SQL指南書 HAVING句③ 自己結合でメジアンを求める - ray88’s diary ■SQL文理解のため、いったんテーブル「graduates」を以下のような単純な値にして考察する ■SQL文で行っている作業ステップ STEP1:以下のように「T1」と…

SQL指南書 HAVING句③ 自己結合でメジアンを求める

SQL 指南書集 目次 - ray88’s diary SQL指南書 HAVING句③の補足(SQL文詳細解説) - ray88’s diary ■メジアン(中央値・中位位) 平均値が信用できない場合、最頻値と並んで良く使用される指標にメジアンがある 母集合のデータを昇順に並べてちょうど中央に…

SQL指南書 HAVING句② 最頻値を求める

SQL 指南書集 目次 - ray88’s diary ■最頻値 ・単純平均は「外れ値(outlier)」に影響を受けやすい欠点がある ・集団の傾向をもっと正確に示す指標の一つに「最頻値(mode)」がある ※最頻値を流行値と呼ぶ場合もある ・DBMSによっては最頻値を求める独自の…