SQL

SQL memo

SQLを書くことになってメモした内容、最初のとっかかりが難しい
特に使用したSQLを以下に記載,LINKも記載

AS

検索結果の列名を別名で表示する

AS句は以下のような書き方で使用します

SELECT 列名1 AS 別名1, 列名2 AS 別名2, ...
FROM テーブル名
[WHERE 条件式など]
検索結果の列名を別名で表示する

AND OR

複数の条件を指定するには、「WHERE」句と1つ目の条件に続いて「AND」や「OR」などの論理演算子を記述し、続いて2つ目の条件を指定します。

「AND」や「OR」を利用して条件を並べる

GROUP BY

指定した列でグループを作成して合計、平均などの集計

MAX 最大値
MIN 最小値
AVG 平均値
SUM 合計
COUNT カウント

GROUP BY

HAVING句

HAVING句とは、GROUP BY句で作成されたグループ表に対して検索条件を与えて行を絞り込むことである。

HAVING句では、GROUP BY句によって作成されるグループ表に対して検索条件を適用する。グループ表の列の条件と同様に、HAVING句で指定される列は、グループ化列、または、集計関数が指定されなければならない。

以下のSELECT文は、社員の名前、入社年度などを管理するテーブル(表)があるとした場合、GROUP BY句によって、入社年度が同じ社員の行ごとにグループ化し、HAVING句を指定して、2000年以降に入社でかつ、その年の入社した社員数が100人以上の入社年度を求めるものである。

SELECT 入社年度 FROM 社員 GROUP BY 入社年度 HAVING 入社年度 >= 2000 AND COUNT(*) >= 100
SELECT 入社年度列(表示したい列) FROM 社員(テーブル名) GROUP BY(集計) 入社年度列(集計したい列) HAVING 入社年度列 >= 2000 AND(追加条件) COUNT(*) >= 100

HAVING句

SQL | GROUP BY と WHERE の順番

SQL | GROUP BY と WHERE の順番

まとめ

こういった書き方もできる

$sql = "SELECT main_id,COUNT(main_id) >= 5 AS decision FROM テーブル名 where main_date = TO_DATE('2017-08-27','YYYY/MM/DD') GROUP BY main_id;";