[解決済み] SQL WHERE句の集計機能
2023-05-14 10:46:31
質問
大学でのテストで、集計関数を
SQL WHERE
節で集約関数を使用することは可能ですか?
私はいつもこれは不可能だと考えており、それがどのように可能であるかの例も見つけることができません。しかし、私の答えはfalseとマークされました。
WHERE
. また、それが可能でない場合、それが記述されている仕様へのリンクを取得するのは良いことだと思います。
どのように解決するのですか?
DBMS について言及していません。MS SQL-Server を使用していると仮定して、自明な T-SQL エラーメッセージを発見しました。
凝集素は、WHERE 節に表示されない場合があります。 WHERE 句に表示することはできません。 サブクエリに含まれない限り、WHERE句に含めることはできません。 または選択リストに含まれるサブクエリで、集約される列が外部参照である場合を除き が外部参照でない限り、WHERE句に表示することはできません。
http://www.sql-server-performance.com/
そして、サブクエリで可能であることの例。
すべての顧客と、5件以上の注文がある人の最小の注文を表示する(その他の人はNULL)。
SELECT a.lastname
, a.firstname
, ( SELECT MIN( o.amount )
FROM orders o
WHERE a.customerid = o.customerid
AND COUNT( a.customerid ) >= 5
)
AS smallestOrderAmount
FROM account a
GROUP BY a.customerid
, a.lastname
, a.firstname ;
UPDATEです。
上記はSQL-ServerとMySQLの両方で実行されますが、私が期待した結果を返しません。次のものはより近いです。私は、フィールド
customerid
フィールドが、最初のケースでは外部テーブルのPRIMARY KEYであり、2番目のケースではPRIMARY KEYでないことです。
5件以上の注文がある顧客には、すべての顧客IDと注文件数を表示します(その他の顧客はNULL)。
SELECT o.customerid
, ( SELECT COUNT( o.customerid )
FROM account a
WHERE a.customerid = o.customerid
AND COUNT( o.customerid ) >= 5
)
AS cnt
FROM orders o
GROUP BY o.customerid ;
関連
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】SQLのHAVINGとWHEREはどう違うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] データベースのインデックス作成はどのように行われるのですか?[クローズド]
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL Serverでシングルクォートをエスケープするにはどうすればよいですか?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] SQL Serverにおける関数とストアドプロシージャの比較
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する
-
[解決済み] Postgres でサブクエリを使用してテーブルの行を更新する