はじめに

この記事では、postgres SQLコマンドでaggregate Max関数を複数の視点から使用して、より深いレベルの理解を得る方法を学びます。 ここでは、議論します:

  • 何? 初心者の観点から、MAX関数は何をしますか?
  • なぜ? どのような状況でMax()関数を使用する必要がありますか?
  • どうやって? この関数をSQLでどのように使用しますか?
  • より多くの我々はまた、いくつかの使用をしますGROUP BY構造。

前提条件

  • PostgreSQL(またはOracle、MySQL、MS SQL Serverなど)用のSQLを書くことの初心者レベルの理解)PG管理ツールまたは他のdb管理ツールを使用するか、PHP、Python、Javascript、Java、C#などのコードまたはスクリプト/コーディング言語を使用して、ASP.Net,VB.Net、ルビー、ノード。jsなど データを取得したり、データベースに変更を加えたりするために、データベースのSQLクエリを送信するためのメソッドと同様に、データベース接続を提供します。SELECTFROMGROUP BYなど、いくつかの基本的なSQL(PL/SQL)文の使用について理解しています。
  • 文字列と関数が何であるかの知識。

MAX()関数とは何ですか?

PostgresMAX()関数は、一連の数値から最も高い(最大)値を返します。

1
i_highest_of_set:=MAX(set_of_numbers);

なぜ、いつMAX()関数を使用するのですか?

あなたがそのセットのどれがセットの中で最も高いかを知りたい数字のセットを持っているときはいつでも。

簡単な例から始めましょう

わかりやすい例から始めましょう。 最初のデータセットは、coding_languagesと呼ばれるテーブルです。

id_tech t_name i_rapid_dev
0 パイソン 7
1 Java 5
2 PHP 9
3 ジャバスクリプト 8

当社のソフトウェア開発会社では、上記のcoding_languagesという表には、以下の三つのフィールドがあります:

  • id_tech 私たちの一意の識別子です。
  • t_nameはコーディング言語の名前です。
  • i_rapid_devは、平均的なコーダーが言語を使用してどれだけ速く開発できるかを整数で評価したものです。

目標は、どの言語が急速な発展の点で最も高い評価を持っているかを調べることです(i_rapid_dev)。 PostgreSQLデータベースレコードセットのi_rapid_dev列で最も高い値を持つt_nameを取得するために、MAX関数を使用するSQLスクリプトを記述しましょう:

1
2
3
4
5
6
7
8
id_tech
,t_name
,MAX(i_rapid_dev)
from
coding_languages
GROUP BY
i_rapid_dev;

上記のSQLの例のための注意:ここでは、SQLグループの知識を使用しています。 あなたはそれをこのように考えることができます:あなたが複数の数の最大値を見つけたいならば、あなたは一連の数を考慮する必要があります。

上記のSQL文はどのように機能しますか? 私たちは一歩一歩それを取るでしょう:

  • (1) SELECT: PostgreSQLのSQLエンジンに、i_rapid_dev列にすべての値の最大値(WHERE句またはHAVING句がないため)が必要であることを伝えています。
  • (2) FROM: データを取得するcoding_languagesテーブルを指定します。
  • (3) GROUP BY: データをグループ化することをPostgresに伝えます。 集計関数であるMAX()関数には、データのグループ化が必要です。

上記のクエリは次を返します。|id_tech|t_name|i_rapid_dev||:—:|—|————:||2|PHP/9/

PHPが急速な開発の点で最速であることがわかりました。

PostgreSQLで”Max”SQL関数を使用した別の例

ミニプロジェクト:私たちは、従業員が私たちの会社で使用される技術をグレードし、最高グレードの技術を知りたいと思 ここでは、”HAVING”というキーワードを紹介しながら、MAX()の別の比較的簡単な使用法を探ります。 ここでは、”technologies”というテーブル名を持つ”生の”データセットを示します:

id_tech t_name_user t_name_tech t_category_tech i_grade
0 Ted Java Lang 4
1 Bif Mongo NoSQL 16
2 スーザン MySQL RDB 8
3 Tim PostgreSQL RDB 16
4 ゲイリー パイソン 20
5 サミー PHP Lang 12

どのように進めるかを計画しましょう。 私たちは、以下を含む複数のことを行うクエリを構築したいと考えています:

  • (1) _t_categorytechフィールド(列)値が”Lang”に等しいデータセット内の行のみを考慮してください。 これは、HAVING句が便利な場所です。 それは3行を生成します。 なぜか分かるか? ヒント:上記の表で”Lang”の値を見てください。 三つがあることに注意してください? 彼らはどの列にいますか?
  • (2)成績がどの技術に使用されるかを知りたいので、これらの3行の_t_nametechフィールドの値を返します。
  • (3)誰が評価を行ったかは気にしないので、_t_nameuser列については言及していません。
  • (4)_igrade列を使用して、これらの3行の値の合計の最大値を取得します。
  • (5)GROUP BYを使用して、適切な列をグループ化します。

上記のSQLの分析:

  • (1) SELECT: Postgresテーブルを次のようにフィルタリングしています: (a)t_name_tech列を表示し、(b)特定の技術ごとにグレードの合計(Sum(i_grade))を計算し、(c)それらの合計の最大値(Max(i_sum_of_grades))を表示し、結果にi_highest_gradeという名前を付けます。
  • (2) FROM: データのソースとしてcoding_languagesテーブルを指定します。
  • (3) GROUP BY: を使ってみました。 MAX関数では、Postgresが内部的に集計しているデータをグループ化し、その中で最も高いものを見つける必要があります。
  • (4) HAVING: これは、t_category_techフィールドに”Lang”がある行をフィルタリングするようにPostgreSQLに指示する場所です。

上記のクエリは次のように返します:

t_name_tech t_category_tech i_grade
PHP Lang 12

メモ

  • なぜ変数とテーブルの列の名前に接頭辞”i”または”t”を付けたのですか? 整数を意味するために”i”を使用し、テキストまたは文字列を意味するために”t”を使用します。
  • 強力なGROUP BYPostgres句を利用した他の記事を探すことをお勧めします。

結論

ここでは、PostgreSQLのMAX()関数を使用して、一連の数値の中で最も高い値の数値を見つけるのが最適な時期と方法を学びました。 特にGROUP BY句とHAVING句を使用してデータのサブセットを操作する場合は、SQLが頭を包むのが難しい場合があるため、学習プロセスをできるだけ簡単にするため、初級レベルとより困難な例の両方を使用しました。

コメントを残す

メールアドレスが公開されることはありません。