スライド 1

Similar documents
SQL 基礎 (6) JOIN 句 - データの結合 作成日 : 2016/02/22 作成者 : 西村 更新履歴 更新日 更新概要 作業者 2016/02/22 新規作成 西村 はじめに この資料では 下記のような JOIN によるテーブル ( データ ) の結合について簡単に説明します INNE

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

データベースS

PowerPoint プレゼンテーション

Microsoft PowerPoint - 講義補助資料2017.pptx

Sequel のすすめ 私が SQL を嫌いな理由 とみたまさひろ RubyHiroba Sequel のすすめ - 私が SQL を嫌いな理由 Powered by Rabbit 2.0.7

Microsoft PowerPoint pptx

Microsoft PowerPoint - db03-5.ppt

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

PowerPoint プレゼンテーション

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

クエリの作成が楽になるUDF

,, create table drop table alter table

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗

PowerPoint Presentation

基本サンプル

Z...QXD (Page 1)

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

基本サンプル

Chapter Two

基本サンプル

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

PowerPoint プレゼンテーション

Microsoft Word - sample_adv-programming.docx

結合演算 ( 復習 ) データベース論 (9) R 社員番号 氏名麻生太郎安部晋三与謝野馨森喜朗 部門経理課営業課総務課営業課 S 部門経理課営業課総務課 電話 問合せ言語と SQL(2) R S 社員番号

PowerPoint プレゼンテーション

JavaプログラミングⅠ

PowerPoint プレゼンテーション

7-1- 基 RDB に関する基礎知識 1 独立行政法人情報処理推進機構

Microsoft Word - 18環設演付録0508.doc

JavaプログラミングⅠ

1,.,,,., RDBM, SQL. OSS,, SQL,,.

講習No.1

Taro-Basicの基礎・条件分岐(公

目次 更新履歴... 1 はじめに... 3 レコードセット?... 3 準備... 5 SQL でデータを取得する... 6 データのループ処理... 7 列の値を取得する... 7 対象行を変更する (MoveFirst, MoveNext, MovePrevious, MoveLast)...

C 言語第 3 回 2 a と b? 関係演算子 a と b の関係 関係演算子 等しい a==b 等しくない a!=b より大きい a>b 以上 a>=b より小さい a<b 以下 a<=b 状態 真偽 値 条件が満たされた場合 TRUE( 真 ) 1(0 以外 ) 条件が満たされなかった場合 F

PowerPoint プレゼンテーション

Chapter Two

Oracle Database Connect 2017 JPOUG

Microsoft Word - SQL.rtf

win版8日目

kantan_C_1_iro3.indd

JavaプログラミングⅠ

プログラミング入門1

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

PowerPoint プレゼンテーション


アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

3 - 正しい SQL ( 方言を排除した SQL 文の記述方法 )

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第7版   None

スライド タイトルなし

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第8版  

Microsoft Word - VBA基礎(3).docx

スライド 1

計算機プログラミング

新たな基礎年金制度の構築に向けて

3,, となって欲しいのだが 実際の出力結果を確認すると両方の配列とも 10, 2, 3,, となってしまっている この結果は代入後の配列 a と b は同じものになっていることを示している つまり 代入演算子 = によるの代入は全要素のコピーではなく 先をコピーする ため 代入後の a と b は

PowerPoint プレゼンテーション

スライド 1

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

知識工学 II ( 第 2 回 ) 二宮崇 ( ) 論理的エージェント (7 章 ) 論理による推論 命題論理 述語論理 ブール関数 ( 論理回路 )+ 推論 ブール関数 +( 述語 限量子 ( ) 変数 関数 定数 等号 )+ 推論 7.1 知識

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

ポインタ変数

Basic descriptive statistics

intra-mart Accel Platform — ViewCreator ユーザ操作ガイド   第6版  

データバー を例にとって解説します 数値の入っているセル範囲 G2:I16 をすべて選択した状態で [ ホーム ] 2

PA4

JavaScriptプログラミング入門 2.JavaScriptの概要

pp2018-pp9base

PowerPoint プレゼンテーション

スライド 1

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

Functional Programming

n n n ( ) n Oracle 16 PostgreSQL 3 MySQL

オートマトンと言語

Microsoft Word - CompA-Ex doc

8 / 0 1 i++ i 1 i-- i C !!! C 2

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

R pdf

PowerPoint プレゼンテーション

JVO Portal の使い方

Microsoft PowerPoint - ruby_instruction.ppt

Web 環境におけるレイヤー別負荷の 2 違い DB サーバ AP サーバ 後ろのレイヤーほど負荷が高く ボトルネックになりやすい

スライド 1


untitled

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Microsoft Word - Android_SQLite講座_画面800×1280

PowerPoint プレゼンテーション

Microsoft PowerPoint - 2.ppt [互換モード]

Microsoft PowerPoint - prog03.ppt

自己紹介 長田悠吾 (Yugo Nagata) SRA OSS, Inc. 日本支社 PostgreSQL 技術支援 コンサルティング PostgreSQL インターナル講座講師 研究開発 Copyright 2018 SRA OSS, Inc. Japan All right

æœ•å¤§å–¬ç´—æŁ°,æœ•å°‘å–¬å•“æŁ°,ã…¦ã…¼ã‡¯ã…ªã……ã…›ã†®äº™éŽ¤æ³Ł

◎phpapi.indd

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

Microsoft PowerPoint - enshu4.ppt [äº™æ‘łã…¢ã…¼ã…›]

ShikumiBunkakai_2011_10_29

Transcription:

カタログデータベース検索 峯尾聡吾 1

目次 データベースと SQL データベース検索のための汎用の知識 HSC-SSP データベースについて 2

データベースと SQL 多くの テーブル を検索できるようにしたもの = データベース 検索するための言語 = SQL ( テーブルの一例 ) id ra dec mag mag_err failure 1000 150.0 2.0 25.0 1.0 true 1001 150.1 2.1 25.1 1.1 true 1002 150.2 2.2 25.2 1.2 false 1003 150.3 2.3 25.3 1.3 false 1004 150.4 2.4 25.4 1.4 true 1005 150.5 2.5 25.5 1.5 true 1006 150.6 2.6 25.6 1.6 false 3

結論から先に ( 前半部 ) 詳しくは SQL 入門 でグーグル先生に聞く SQL には方言が少しある 入門サイトの例文がエラーになるときは方言の問題かもしれない PostgreSQL を検索ワードに入れると解決するかもしれない 4

テーブル全部を取得 SELECT * FROM catalog; catalog id ra dec mag mag_err failure 1000 150.0 2.0 25.0 1.0 true 1001 150.1 2.1 25.1 1.1 true 1002 150.2 2.2 25.2 1.2 false 1003 150.3 2.3 25.3 1.3 false 1004 150.4 2.4 25.4 1.4 true 1005 150.5 2.5 25.5 1.5 true 1006 150.6 2.6 25.6 1.6 false 5

テーブル全部を取得 SELECT * FROM catalog; 大文字 小文字は 区別しない 文字列値はシングルクォーテーションでくくる Abc ( 文字列値は大文字小文字を区別する ) ダブルクォーテーションは 文字列値の意味ではない 普通は使わない 6

用語 クエリ (Query /ˈkwɪəɹi/, /ˈkwɛɹi/) 問い合わせ (Question と同根 cf. inquiry) だいたい SQL 文のことを指して使う コラム (Column) 柱 の意味 テーブルの 縦の列 を指す カラム と書く人もいる 行 (Row) ロー とは日本語であまり言わない気がする テーブルの 横の行 を指す 7

コラム ( 縦の列 ) を選択 SELECT ra,dec,mag FROM catalog; catalog id ra dec mag mag_err failure 1000 150.0 2.0 25.0 1.0 true 1001 150.1 2.1 25.1 1.1 true 1002 150.2 2.2 25.2 1.2 false 1003 150.3 2.3 25.3 1.3 false 1004 150.4 2.4 25.4 1.4 true 1005 150.5 2.5 25.5 1.5 true 1006 150.6 2.6 25.6 1.6 false 8

行 ( 横の行 ) を選択 SELECT * FROM catalog WHERE NOT failure; catalog id ra dec mag mag_err failure 1000 150.0 2.0 25.0 1.0 true 1001 150.1 2.1 25.1 1.1 true 1002 150.2 2.2 25.2 1.2 false 1003 150.3 2.3 25.3 1.3 false 1004 150.4 2.4 25.4 1.4 true 1005 150.5 2.5 25.5 1.5 true 1006 150.6 2.6 25.6 1.6 false 9

テーブルの結合 各生徒を担当する担任が知りたい ( このあたりから SQL が楽しくなります ) studentlist student class はな C 組 ひまり B 組 あかり A 組 いちか C 組 classlist class 担任 A 組 佐藤 B 組 鈴木 C 組 高橋 10

テーブルの結合 各生徒を担当する担任が知りたい SELECT * FROM studentlist JOIN classlist ON (studentlist.class = classlist.class); studentlist student class はな C 組 ひまり B 組 あかり A 組 いちか C 組 classlist class 担任 A 組 佐藤 B 組 鈴木 C 組 高橋 studentlist JOIN classlist ON ( ) student class class 担任 はな C 組 = C 組 高橋 ひまり B 組 = B 組 鈴木 あかり A 組 = A 組 佐藤 いちか C 組 = C 組 高橋 11

結合 (JOIN) の詳しい説明 テーブルとは行の集合である : A = { 行 1, 行 2, }, 行 = ( 値 1, 値 2, ) B = { 行 1, 行 2, } 結合とは集合の直積である : A join B on( 条件 ) = { ( 行 a, 行 b) 行 a A かつ行 b B かつ条件 } ややこしい結合で混乱したときはここに立ち返るとよい 12

結合条件の書き方 SELECT * FROM studentlist JOIN classlist ON (studentlist.class=classlist.class); 面倒くさいので下のように略記可能 SELECT * FROM studentlist JOIN classlist USING (class); 13

結合は慎重に ( 重要 ) 結合条件によっては答えが返ってこなくなる 検索に時間がかかりすぎるため 検索用の索引 ( インデクス ) が付いているコラムを使うのが良い 結合条件を満たさない行は静かに消える 次ページ 14

結合の種類 もし studentlist に D 組 の生徒がいるのに classlist に D 組 が抜けている場合 その生徒は居なかったことになる studentlist student class はな C 組 ひまり B 組 あかり A 組 いちか C 組 さくら D 組 classlist class 担任 A 組 佐藤 B 組 鈴木 C 組 高橋 D 組の情報がない! studentlist JOIN classlist ON( ) student class class 担任 はな C 組 = C 組 高橋 ひまり B 組 = B 組 鈴木 あかり A 組 = A 組 佐藤 いちか C 組 = C 組 高橋 さくら のレコードが抹消される 15

左結合 JOIN の左オペランドを抹消したくない場合は LEFT JOIN を使う ( 同様に RIGHT JOIN も FULL JOIN もある ) studentlist LEFT JOIN classlist ON (studentlist.class = classlist.class); studentlist student class はな C 組 ひまり B 組 あかり A 組 いちか C 組 さくら D 組 classlist class 担任 A 組 佐藤 B 組 鈴木 C 組 高橋 studentlist LEFT JOIN classlist ON( ) student class class 担任 はな C 組 = C 組 高橋 ひまり B 組 = B 組 鈴木 あかり A 組 = A 組 佐藤 いちか C 組 = C 組 高橋 さくら D 組 NULL NULL 16

三つ以上の結合 A join B on (A.a = B.b) は全体で一つのテーブルを表すので (A join B on (A.a = B.b)) join C on (A.a = C.c) のように書けば三つのテーブルを結合できる かっこを外して A join B on (A.a = B.b) join C on (A.a = C.c) とも書ける 17

別名のつけ方 コラムやテーブルに別名をつけられる SELECT x.mag AS magnitude, y.z AS redshift FROM catalog AS x JOIN photo_z AS y ON (x.id = y.objid) WHERE x.mag < 25 AND NOT x.failure ; 18

クエリの診断 クエリが返ってこないなあ と思ったら explain 文を投げてみてください EXPLAIN SELECT ( 説明がほしいクエリ ) ; 回答 一つめのレコードが返るまでにかかる時間 すべてのレコードが返るまでにかかる時間 ( 数値の単位は 8KB をストレージから読み込む時間 ) Nested Loop Left Join (cost=26749.27..5532931.67 rows=86650 width=2331) 19

HSC-SSP DATA RELEASE 20

存在するテーブルについて 詳しくは へ https://hscdata.mtk.nao.ac.jp/schema_browser2/ 21

テーブルの大別 Metadata ( data about data ) 画像 (data) にかかわる情報 (data) 撮像日時 望遠鏡の向いていた方向 など 小さなテーブルなのでおざなりに使ってよい Catalog 天体の情報 位置 等級 形状 など 巨大なテーブルなので注意して使う 22

Metadata Frame 撮像された個別の CCD 画像一枚一枚の情報 Mosaic deepcoadd スタックの Patch 画像一枚一枚の情報 Mosaicframe deepcoadd ある Frame がある Mosaic に含まれているか という情報 Warped deepcoadd ワープ ( 座標変換 ) のみを行った 足し合わせる前の画像 Fcr Frame の Flux Correction ( モザイクによって決まったもの ) Wcs Frame の Wcs ( モザイクによって決まったもの ) 23

Metadata Frame 撮像された個別の CCD 画像一枚一枚の情報 Mosaic deepcoadd? スタックの Patch 画像一枚一枚の情報 Mosaicframe deepcoadd? ある Frame がある Mosaic に含まれているか という情報 Warped deepcoadd? ワープ ( 座標変換 ) のみを行った 足し合わせる前の画像 Fcr Frame の Flux Correction ( モザイクによって決まったもの ) Wcs Frame の Wcs ( モザイクによって決まったもの ) 24

接尾辞の意味 deepcoadd 深いスタック の意味 当初はいろんなスタック画像を用意する腹積もりだったが現状はこれしかない merged ( 次に出てくる ) merged カタログをレファレンスにして Forced photometry した の意味 当初はバンドごとに iselect, rselect, などがあったが現在では merged のみになった 要するにどれも無実な飾り 25

Catalog photoobj_mosaic deepcoadd merged Forced photometry の結果をまとめたもの mosaic_forceflag_i deepcoadd merged Forced photometry 時のフラグ (I バンド ) mosaic_measlist deepcoadd 非 forced photometry の測定結果とフラグ mosaic_measphoto deepcoadd Measlist 内のフラックスを物理的な単位に直した 26

例 SELECT id, ra2000, decl2000, imag_cmodel FROM s15b_wide.photoobj_mosaic deepcoadd merged WHERE tract = 8766; LIMIT 10; たいていはゴミしか出てこない ( フラグをきちんと指定していないから ) 27

フラグの使い方 フラグを使いたいが Photoobj テーブルにはフラグがない 28

( 復習 ) テーブルの結合 各生徒を担当する担任が知りたい SELECT * FROM studentlist JOIN classlist ON (studentlist.class = classlist.class); studentlist student class はな C 組 ひまり B 組 あかり A 組 いちか C 組 classlist class 担任 A 組 佐藤 B 組 鈴木 C 組 高橋 studentlist JOIN classlist ON ( ) student class class 担任 はな C 組 = C 組 高橋 ひまり B 組 = B 組 鈴木 あかり A 組 = A 組 佐藤 いちか C 組 = C 組 高橋 29

テーブルの結合 各天体に対応するフラグが知りたい Photoobj JOIN flag USING (id) photoobj id mag 1 23 2 24 3 25 4 26 flag id flag 1 NG 2 OK 3 OK 4 NG mag Id id flag 23 1 = 1 NG 24 2 = 2 OK 25 3 = 3 OK 26 4 = 4 NG 30

例 (2) [ 悪い例 ] SELECT id, ra2000, decl2000, imag_cmodel FROM s15b_wide.photoobj_mosaic deepcoadd merged AS photo JOIN s15b_wide.mosaic_forceflag_i deepcoadd merged AS iflag USING (id) WHERE photo.tract = 8766 AND iflag.deblend_nchild = 0 AND NOT iflag.cmodel_flux_flags; ; 31

例 (2) [ 悪い例 ] SELECT id, ra2000, decl2000, imag_cmodel FROM s15b_wide.photoobj_mosaic deepcoadd merged AS photo JOIN s15b_wide.mosaic_forceflag_i deepcoadd merged AS iflag USING (id) WHERE photo.tract = 8766 AND iflag.deblend_nchild = 0 AND NOT iflag.cmodel_flux_flags; ; ものすごい遅い 32

photoobj なぜ遅い? tract ごとに子テーブルになっているから Tract 0 Tract 0 Tract 1 Tract 1 id = 50 mag = id = 51 mag = Tract 2 id = 100 mag = id = 101 mag = どの子テーブルに Id = 100 があるのかわからないのですべての子テーブルを参照する id = 50 flag = id = 51 flag = Tract 2 id = 100 flag = id = 101 flag = forceflag_i id = 102 mag = id = 102 flag = Tract 3 Tract 3 33

例 (3) [ 良い例 ] SELECT id, ra2000, decl2000, imag_cmodel FROM s15b_wide.photoobj_mosaic deepcoadd merged AS photo JOIN s15b_wide.mosaic_forceflag_i deepcoadd merged AS iflag USING (id) WHERE photo.tract = 8766 AND iflag.tract = 8766 AND iflag.deblend_nchild = 0 AND NOT iflag.cmodel_flux_flags; LIMIT 10; フラグテーブルにも同じ条件を書く 34

photoobj なぜ速い? 子テーブルが一つに絞れるから Tract 0 Tract 0 Tract 1 Tract 1 id = 50 mag = id = 50 flag = id = 51 mag = Tract 8766 id = 100 mag = id = 101 mag = photo.tract = 8766 id = 51 flag = Tract 8766 id = 100 flag = id = 101 flag = forceflag_i id = 102 mag = iflag.tract = 8766 id = 102 flag = Tract 3 Tract 3 35

なお このような秘技が不要なものも試験中 スキーマブラウザで s15b_wide view experimental:. 36

まとめ SQL についてはググろう MySQL や SQLite や SQLServer ではなく PostgreSQL なので注意 講習会中は何でも気軽に質問してください トラクトごとに子テーブルに分かれていることに注意してクエリ文を組み立てよう 37

SELECT phot.id, phot.ra2000, phot.decl2000, phot.iflux_cmodel, phot.iflux_cmodel_err, phot.iflux_psf, phot.iflux_psf_err, ref_flag.classification_extendedness, phot.a_i 実践例 FROM s15b_wide.photoobj_mosaic deepcoadd merged AS phot JOIN s15b_wide.mosaic_forceflag_i deepcoadd merged AS i_flag USING(id) JOIN s15b_wide.mosaic_refflag_x deepcoadd AS ref_flag USING(id) WHERE phot.tract=8766 AND i_flag.tract=8766 AND ref_flag.tract=8766 AND NOT i_flag.centroid_sdss_flags AND NOT i_flag.flags_pixel_edge AND NOT i_flag.flags_pixel_interpolated_center AND NOT i_flag.flags_pixel_saturated_center AND NOT i_flag.flags_pixel_cr_center AND NOT i_flag.flags_pixel_bad AND NOT i_flag.cmodel_flux_flags AND NOT i_flag.flux_psf_flags AND ref_flag.detect_is_primary ; 38

SELECT phot.id, phot.ra2000, phot.decl2000, phot.iflux_cmodel, phot.iflux_cmodel_err, phot.iflux_psf, phot.iflux_psf_err, ref_flag.classification_extendedness, phot.a_i FROM s15b_wide.photoobj_mosaic deepcoadd merged AS phot JOIN s15b_wide.mosaic_forceflag_i deepcoadd merged AS i_flag USING(id) JOIN s15b_wide.mosaic_refflag_x deepcoadd AS ref_flag USING(id) WHERE phot.tract=8766 AND i_flag.tract=8766 AND ref_flag.tract=8766 AND NOT i_flag.centroid_sdss_flags AND NOT i_flag.flags_pixel_edge AND NOT i_flag.flags_pixel_interpolated_center AND NOT i_flag.flags_pixel_saturated_center AND NOT i_flag.flags_pixel_cr_center AND NOT i_flag.flags_pixel_bad AND NOT i_flag.cmodel_flux_flags AND NOT i_flag.flux_psf_flags AND ref_flag.detect_is_primary ; 39

FROM s15b_wide.photoobj_mosaic deepcoadd merged AS phot ( メインのテーブル ) JOIN s15b_wide.mosaic_forceflag_i deepcoadd merged AS i_flag USING(id) (forced photometry フラグ ) JOIN s15b_wide.mosaic_refflag_x deepcoadd AS ref_flag USING(id) ( レファレンスカタログのフラグ ) 40

SELECT phot.id, phot.ra2000, phot.decl2000, phot.iflux_cmodel, phot.iflux_cmodel_err, phot.iflux_psf, phot.iflux_psf_err, ref_flag.classification_extendedness, phot.a_i FROM s15b_wide.photoobj_mosaic deepcoadd merged AS phot JOIN s15b_wide.mosaic_forceflag_i deepcoadd merged AS i_flag USING(id) JOIN s15b_wide.mosaic_refflag_x deepcoadd AS ref_flag USING(id) WHERE phot.tract=8766 AND i_flag.tract=8766 AND ref_flag.tract=8766 AND NOT i_flag.centroid_sdss_flags AND NOT i_flag.flags_pixel_edge AND NOT i_flag.flags_pixel_interpolated_center AND NOT i_flag.flags_pixel_saturated_center AND NOT i_flag.flags_pixel_cr_center AND NOT i_flag.flags_pixel_bad AND NOT i_flag.cmodel_flux_flags AND NOT i_flag.flux_psf_flags AND ref_flag.detect_is_primary ; 41

SELECT phot.id, -- 天体 ID phot.ra2000, --RA phot.decl2000, --DEC phot.iflux_cmodel, --flux (iバンド) phot.iflux_cmodel_err,--その誤差 phot.iflux_psf, --flux (iバンド) phot.iflux_psf_err, --その誤差 ref_flag.classification_extendedness, phot.a_i --iバンドの吸収 非- 星らしさ 42

SELECT phot.id, phot.ra2000, phot.decl2000, phot.iflux_cmodel, phot.iflux_cmodel_err, phot.iflux_psf, phot.iflux_psf_err, ref_flag.classification_extendedness, phot.a_i FROM s15b_wide.photoobj_mosaic deepcoadd merged AS phot JOIN s15b_wide.mosaic_forceflag_i deepcoadd merged AS i_flag USING(id) JOIN s15b_wide.mosaic_refflag_x deepcoadd AS ref_flag USING(id) WHERE phot.tract=8766 AND i_flag.tract=8766 AND ref_flag.tract=8766 AND NOT i_flag.centroid_sdss_flags AND NOT i_flag.flags_pixel_edge AND NOT i_flag.flags_pixel_interpolated_center AND NOT i_flag.flags_pixel_saturated_center AND NOT i_flag.flags_pixel_cr_center AND NOT i_flag.flags_pixel_bad AND NOT i_flag.cmodel_flux_flags AND NOT i_flag.flux_psf_flags AND ref_flag.detect_is_primary ; 43

WHERE phot.tract=8766 AND i_flag.tract=8766 AND ref_flag.tract=8766 AND NOT i_flag.centroid_sdss_flags 座標測定に失敗していない AND NOT i_flag.flags_pixel_edge 画像の隅のピクセルを使っていない AND NOT i_flag.flags_pixel_interpolated_center 中心付近の重要な箇所に 値を補間されたピクセルがない AND NOT i_flag.flags_pixel_saturated_center 中心付近の重要な箇所に サチったピクセルがない AND NOT i_flag.flags_pixel_cr_center 中心付近の重要な箇所に 宇宙線の乗ったピクセルがない AND NOT i_flag.flags_pixel_bad 壊れたピクセルを使っていない AND NOT i_flag.cmodel_flux_flags フラックス測定に失敗していない AND NOT i_flag.flux_psf_flags フラックス測定に失敗していない AND ref_flag.detect_is_primary ; プライマリ天体である 44

補遺 45

キーワードだけ挙げるので 詳しくはググってください 46

SQL 演算子 AND, OR, NOT 命題の かつ または でない +, -, *, /, % 四則演算 a^b 累乗 <, >, <=, >= 大小比較 =,!= 等しい 等しくない (C 言語と違って == ではない ) a BETWEEN min AND max min <= a AND a <= max のこと PostgreSQL の演算子は優先順位が直感的でないことがあるのでこまめに括弧でくくってください 47

UNION ALL テーブルを横につなげるのが JOIN テーブルを縦につなげるのが UNION ALL SELECT id from s15b_deep WHERE UNION ALL SELECT id from s15b_wide WHERE ; 48

Aggregate functions ( 集約関数 ) 集約 ( カウント 平均など ) を行う関数がある SELECT count(id) FROM s15b_wide ; ( その他の集約関数についてはググること ) 集約関数と集約しないコラムは混在できない SELECT count(id), flux_cmodel FROM ; 49

WITH 節 一時テーブルを作れる WITH -- 一時テーブルを作って tempname1 AS (SELECT FROM ), tempname2 AS (SELECT FROM ) -- それを再成形する SELECT FROM tempname1 JOIN tempname2 ON ; 50