ホームページ > データベース > mysql チュートリアル > 「KEEP」句はOracleの「PARTITION BY」集計関数にどのような影響を与えますか?

「KEEP」句はOracleの「PARTITION BY」集計関数にどのような影響を与えますか?

Mary-Kate Olsen
リリース: 2024-12-21 09:35:10
オリジナル
314 人が閲覧しました

How Does the `KEEP` Clause Affect `PARTITION BY` Aggregate Functions in Oracle?

Oracle の KEEP ありとなしの PARTITION BY

Oracle の PARTITION BY 句を使用すると、ユーザーは指定された列に基づいてテーブル内の行をグループ化できます。集計計算用。場合によっては、KEEP 句を PARTITION BY と組み合わせて使用​​して、各パーティション内の個々の行の保持を制御できます。

KEEP を使用した構文:

MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno)
ログイン後にコピー

この構文では、KEEP 句の後に DENSE_RANK FIRST が続き、給与が最も低い行を次の行にする必要があることを示しています。各パーティション内に保持されます。 DENSE_RANK は連続的なランキングを保証します。つまり、同じ給与を持つ行は同じランクになります。

KEEP を使用しない構文:

MIN(sal) OVER (PARTITION BY deptno)
ログイン後にコピー

この構文では、KEEP 句が省略されています。 。 KEEP を使用しない場合、各パーティション内のすべての行が集計計算の対象となるため、同じ値を持つ複数の行が結果に含まれる可能性があります。

相違点:

2 つのクエリの主な違いは次のとおりです。

  • With KEEP: 各部門内の給与が最も低い行のみが結果に含まれます。
  • KEEP なし: 各部門内のすべての行が結果に含まれる可能性があります。最低給与値が重複しています。

冗長KEEP:

この例では、MIN 関数も同じ列 (sal) に適用されるため、KEEP 句は冗長です。その結果、給与に基づいて最初にランク付けされた行は、常に給与が最も低い行になります。

順序列が異なる例:

ただし、順序が異なる場合は、順序付け列は KEEP 句に使用され、別の効果をもたらす可能性があります:

MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY name) OVER (PARTITION BY deptno)
ログイン後にコピー

この場合、次の行のうち給与が最も低い行です。同じ順序 (名前) を持つものは各パーティション内に保持されます。これにより、ユーザーは各部門内の特定の名前の従業員の最低給与を選択できます。

以上が「KEEP」句はOracleの「PARTITION BY」集計関数にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート