2017-01-04 7 views
-1

Relation Schema for Questions RevisionSQLスーパーキーと私はImが改正のためにやって質問があります

コマンドは、2 Superkeysとaccount_branch関係における候補キーを識別します。私はアイデアを持っていますが、誰かが提案を持っていれば確認が必要です。これまでのところ私はaccount_numberという候補キーを持っていました、スーパーキーはAccount_number + branch_name、account_number + assetsです

もう一つのSQLコマンド質問: 3つ以上の支店を持ち、それぞれが1,000,000を超える資産を保有する都市のベンチの数。私はこの使用してGROUP BYを実行しようとしましたし、HAVINGている、これはこれはペンと紙を持つすべての理論があるとして、残念ながら、私がテストすることはできません行くための正しい方法である

このための私の試みの答えは:

SELECT branch_city, COUNT(branch_city) 
FROM branch 
WHERE assets > 1000000 
GROUP BY branch_city 
HAVING COUNT(branch_city) > 3 
+0

あなたが試したことを提示した場合、あるいは少なくともこの場合、あなたが思うものを最初に提示すると、おそらくより良い応答を得るだ​​ろう。 – Gratzy

+0

擬似SQLを書いたことがある場合は、質問に追加してください。 – Gratzy

+0

すべての試行を更新しました –

答えて

0

候補キーは、列で、または列のセット、一意に他のデータを参照せずに任意のデータベースレコードを識別することができるテーブル(余分な列)に

ACCOUNT_NUMBERはaccount_branchテーブルの主キーであり、したがって、一意無関係の列を使用せずにテーブル内の行を識別するそうです、これはキー

候補スーパーキーのための基準を満たすACCOUNT_NUMBERであるため一意リレーショナル・データベース内の任意の行を識別する列の組み合わせ(一意性のために必要ではない追加の列を有していてもよい)

ありますaccount_branchテーブルの主キーで、branch_nameはブランチテーブルの外部キーです。Account_number + branch_nameはaccount_branchリレーション内の行を一意に識別しますので、それはスーパーキーです。 Account_number + branch_nameはすでに一意の行を識別しているので、ブランチからの他の列を追加すると一意のレコードが識別されるため、Account_number + branch_name + assetsもスーパーキーです。

SELECT branch_city 
FROM branch 
WHERE assets > 1000000 

が資産を超える1000000

GROUP BY branch_city 

をされているすべての行の支店から結果セットを返す結果のグループにデータベースに指示します:

SELECT branch_city, COUNT(branch_city) 
FROM branch 
WHERE assets > 1000000 
GROUP BY branch_city 
HAVING COUNT(branch_city) > 3 

は、ご希望の結果セットを返しませんbranch_cityで設定する

集計関数を追加

COUNT(branch_city) /集計機能が/

によってグループを必要とする結果における各都市の行、または発生数が、その後

HAVING COUNT(branch_city) > 3 

を設定返し発生のみ市内まで結果セットトリム3回以上

関連する問題