mysqlで最大値をクエリする方法

青灯夜游
リリース: 2021-12-31 15:10:40
オリジナル
36871 人が閲覧しました

mysql では、「SELECT」ステートメントと MAX() 関数を使用して最大値をクエリできます。この関数は、一連の値の最大値を返すことができます。構文「SELECT MAX(DISTINCT 式」 ) FROM データテーブル名 ;"。

mysqlで最大値をクエリする方法

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql では、「SELECT」ステートメントと MAX() 関数を使用して最大値をクエリできます。

MySQL MAX()この関数は、一連の値の最大値を返します。 MAX() 関数は、最大数量、最も高価な製品、顧客による最大支払い額の検索など、多くのクエリで非常に便利です。

MAX()関数の構文は次のとおりです。

MAX(DISTINCT expression);
ログイン後にコピー

DISTINCT 演算子を追加すると、MAX 関数は、すべての値の最大値と同じ、異なる値の最大値を返します。これは、DISTINCT 演算子が MAX 関数に影響を与えないことを意味します (DISTINCT 演算子が使用されるかどうかは関係ありません)。

DISTINCT 演算子は、COUNT、SUM、AVG などの他の 集計関数 内で有効であることに注意してください。

MySQL MAX 関数の例

サンプル データベース (yiibaidb) の payments テーブルを見てみましょう。そのテーブル構造は次のとおりです。 -

mysql> desc payments;
+----------------+---------------+------+-----+---------+-------+
| Field          | Type          | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| customerNumber | int(11)       | NO   | PRI | NULL    |       |
| checkNumber    | varchar(50)   | NO   | PRI | NULL    |       |
| paymentDate    | date          | NO   |     | NULL    |       |
| amount         | decimal(10,2) | NO   |     | NULL    |       |
+----------------+---------------+------+-----+---------+-------+
4 rows in set
ログイン後にコピー

payments テーブルの最大支払い額を取得するには、次のクエリを使用できます。

SELECT 
    MAX(amount)
FROM
    payments;
ログイン後にコピー

上記のクエリ ステートメントを実行すると、次の結果が得られます-

mysql> SELECT 
    MAX(amount)
FROM
    payments;
+-------------+
| MAX(amount) |
+-------------+
| 120166.58   |
+-------------+
1 row in set
ログイン後にコピー

サブクエリの MySQL MAX 関数

最大支払い金額だけでなく、顧客番号、小切手番号、支払い日などの他の支払い情報も取得するには、次のことができます。サブクエリで実行します。 MAX 関数を次のように使用します。

SELECT 
    *
FROM
    payments
WHERE
    amount = (
 SELECT 
            MAX(amount)
        FROM
            payments);
ログイン後にコピー

上記のクエリ ステートメントを実行し、次の結果を取得します。

+----------------+-------------+-------------+-----------+
| customerNumber | checkNumber | paymentDate | amount    |
+----------------+-------------+-------------+-----------+
|            141 | JE105477    | 2015-03-18  | 120166.58 |
+----------------+-------------+-------------+-----------+
1 row in set
ログイン後にコピー

上記のクエリ ステートメントはどのように実行されますか?

  • サブクエリは、すべての最大支払額を返します。
  • 外側のクエリは、サブクエリから返された最大金額と等しい金額の他の関連する支払い情報を取得します。

MAX 関数を使用しない代わりに、ORDER BY 句を使用して結果セットを降順に並べ替え、LIMIT を使用することもできます。 句で最初の行を取得し、次のようにクエリします。

SELECT 
    *
FROM
    payments
ORDER BY amount DESC
LIMIT 1;
ログイン後にコピー

上記のクエリ ステートメントを実行すると、次の結果が得られます。

+----------------+-------------+-------------+-----------+
| customerNumber | checkNumber | paymentDate | amount    |
+----------------+-------------+-------------+-----------+
|            141 | JE105477    | 2015-03-18  | 120166.58 |
+----------------+-------------+-------------+-----------+
1 row in set
ログイン後にコピー

amount# で作成していない場合## 列インデックスの場合、2 番目のクエリは payments テーブル内のすべての行をチェックするため、より高速に実行されます。一方、最初のクエリは payments テーブル内のすべての行を 2 回 (サブクエリ内で 1 回) チェックし、外側のクエリで 1 回。ただし、amount 列にインデックスが付けられている場合は、最初のクエリの実行が速くなります。

GROUP BY 句を使用した MySQL MAX

各グループの最大値を見つけるには、

SELECT## で実行できます。 #ステートメントで MAX 関数と GROUP BY 句を使用します。 顧客ごとに、顧客が支払った最大支払額を取得するためのクエリを実行するには、次のクエリを使用できます。

SELECT 
    customerNumber, MAX(amount)
FROM
    payments
GROUP BY customerNumber
ORDER BY MAX(amount);
ログイン後にコピー

上記のクエリ ステートメントを実行すると、次のクエリ結果が得られます-

+----------------+-------------+
| customerNumber | MAX(amount) |
+----------------+-------------+
|            219 | 4465.85     |
|            198 | 9658.74     |
|            381 | 14379.9     |
|            103 | 14571.44    |
|            473 | 17746.26    |
|            362 | 18473.71    |
******* 此处省略一大波数据 ******
|            148 | 105743      |
|            124 | 111654.4    |
|            141 | 120166.58   |
+----------------+-------------+
98 rows in set
ログイン後にコピー

HAVING 句を使用した MySQL MAX

HAVING

句 #Function で MAX## を使用して、指定した条件に基づいてグループにフィルタを追加できます。条件。 たとえば、次のクエリは各顧客の最大支払い額を検索し、次のクエリ ステートメントのような返された金額に基づいて、80000- を超える支払いのみをクエリします。

SELECT 
    customerNumber, MAX(amount)
FROM
    payments
GROUP BY customerNumber
HAVING MAX(amount) > 80000;
ログイン後にコピー

が実行されます。 上記のクエリ ステートメントにより、次の結果が得られます。 -

+----------------+-------------+
| customerNumber | MAX(amount) |
+----------------+-------------+
|            114 | 82261.22    |
|            124 | 111654.4    |
|            141 | 120166.58   |
|            148 | 105743      |
|            167 | 85024.46    |
|            239 | 80375.24    |
|            321 | 85559.12    |
+----------------+-------------+
7 rows in set
ログイン後にコピー
[関連する推奨事項: mysql ビデオ チュートリアル ]

以上がmysqlで最大値をクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!