mysql データのグループ化: フィルターのグループ化

巴扎黑
リリース: 2017-05-09 13:48:02
オリジナル
2250 人が閲覧しました

mysql フィルターのグループ化

group by を使用してデータをグループ化することに加えて、MySQL ではグループをフィルター処理して、どのグループを含めるか、どのグループを除外するかを指定することもできます。たとえば、少なくとも 2 件の注文があるすべての顧客をリストすることができます。このデータを取得するには、個人ではなく完全なグループに基づいてフィルタリングを実行する必要があります。

where 句が実際に動作していることはすでに見てきました。ただし、where フィルターはグループではなく行を指定しているため、この例では where はタスクを実行しません。実際、where にはグループ化の概念がありません。

では、どこで使用しない場合は何を使用するのでしょうか? MySQL は、この目的のために別の句、having 句を提供します。 「have」は「where」と非常によく似ています。実際、これまでに学習したすべての種類の where 句は、have に置き換えることができます。唯一の違いは、フィルター グループがある一方で行をフィルターする場所です。

: はすべての where 演算子をサポートします。

では、グループをフィルタリングするにはどうすればよいでしょうか?次の例を見てください:

入力:

select cust_id,count(*) as orders from orders group by cust_id having count(*) >= 2;
ログイン後にコピー

出力:

mysql データのグループ化: フィルターのグループ化

分析: この select ステートメントの最初の 3 行は、上記のステートメントと似ています。最後の行は、count(*>)>=2 (3 つ以上の順序) でグループをフィルタリングする Having 句を追加します。

ご覧のとおり、フィルタリングは特定の行の値ではなく、グループ化された集計値に基づいているため、ここでは where 句は機能しません。

having と where の違い: これを理解する別の方法として、データをグループ化する前に where フィルターを使用し、データをグループ化した後にフィルターを使用するというものがあります。これは重要な違いであり、where によって除外された行はグループ化に含まれません。これにより、計算値が変更される可能性があり、その結果、これらの値に基づいてフィルターで除外される Having 句内のグループ化に影響を与える可能性があります。

それでは、1 つのステートメントで where 句と Having 句の両方を使用する必要があるのでしょうか?実際、あります。過去 12 か月間に 2 人以上の顧客が返されるように、上記のステートメントをさらにフィルタリングするとします。これを実現するには、Where 句を追加して 12 か月以内に行われた注文を除外します。次に、having 句を追加して、3 つ以上の順序を持​​つグループを除外します。

よりよく理解するために、2 (両端を含む) を超える製品と 10 (両端を含む) 以上の価格を持つサプライヤーをリストする以下の例を見てください。このステートメントの最初の行は、前の例とよく似た集計関数を使用した基本的な SELECT です。 WHERE 句は、prod_price が 10 以上であるすべての

行をフィルターします。データは、vend_id によってグループ化され、HAVING 句によってカウントが 2 以上のグループがフィルタリングされます。

WHERE 句がない場合は、さらに 2 行が取得されます (サプライヤー 1002、

が販売するすべての製品の価格は 10 未満です。サプライヤー 1001、3 製品を販売しましたが、1 つの製品だけが 10 に等しいより高い価格 mysql データのグループ化: フィルターのグループ化

を持っています) ):

入力: count(*) >=2を持つvend_idによる製品グループからのnum_prodsとしてvend_id,count(*)を選択します。出力:

【関連する推奨事項】

mysqlデータのグループ化とソート、および SELECT 句の順序

mysql データのグループ化: フィルターのグループ化

mysql データのグループ化: グループ化の作成

以上がmysql データのグループ化: フィルターのグループ化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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