1.やさしい
行数を数える集約関数はどれですか?
- AMAX
- BAVG
- CCOUNT
- DSUM
2.やさしい
給与が高い順から低い順に結果を並べ替えるにはどうしますか?
- AGROUP BY salary DESC
- BORDER BY salary DESC
- CSORT salary DOWN
- DORDER BY salary ASC
3.やさしい
候補キーとは何ですか?
- ANULL 値を含むあらゆる列
- B2 つのテーブルの行を結びつけるために共有される列の組
- C各行を一意に識別する最小の列の組
- D外部キーになるのを待っている列
4.ふつう
2 つの SELECT クエリの間で使う INTERSECT は何を返しますか?
- A両方の結果のすべての行
- B結果の直積
- C1 つ目の結果にあって 2 つ目にない行
- D両方の結果に現れる行
5.ふつう
customers テーブルの異なる都市の数を返すクエリはどれですか?
- ASELECT DISTINCT COUNT(city) FROM customers
- BSELECT COUNT(DISTINCT city) FROM customers
- CSELECT SUM(DISTINCT city) FROM customers
- DSELECT COUNT(city) FROM customers GROUP BY city
6.ふつう
employees テーブルには、別の従業員を参照する manager_id 列があります。各従業員をその上司の名前と並べて一覧にするにはどうしますか?
- Amanager_id だけで GROUP BY を使う
- BUNION ALL と WHERE フィルターを使って、テーブルをそれ自身と結合する
- C2 つの別名を使って employees テーブルをそれ自身と結合する
- Dディスク上にテーブルの 2 つ目のコピーを作る
7.むずかしい
クエリ FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid' が、注文のない顧客を思いがけず落としてしまいます。なぜですか?
- Ao に対する WHERE 条件が NULL で埋められた行を除外し、内部結合と同じになるから
- BLEFT JOIN は一致しない行を決して残さないから
- Cstatus が予約語だから
- D結合には ON ではなく USING を使うべきだから
8.むずかしい
customers LEFT JOIN orders の後、顧客ごとの注文数を数えるのに COUNT(*) ではなく COUNT(o.id) を使うのはなぜですか?
- A結合の後では COUNT(*) が使えないから
- BCOUNT(*) は、注文のない顧客の NULL で埋められた行を 1 と数えるから
- CCOUNT(*) は NULL 値を含む行を無視するから
- DCOUNT(o.id) は異なる顧客だけを数えるから
解答
- 1. C · COUNT
- 2. B · ORDER BY salary DESC
- 3. C · 各行を一意に識別する最小の列の組
- 4. D · 両方の結果に現れる行
- 5. B · SELECT COUNT(DISTINCT city) FROM customers
- 6. C · 2 つの別名を使って employees テーブルをそれ自身と結合する
- 7. A · o に対する WHERE 条件が NULL で埋められた行を除外し、内部結合と同じになるから
- 8. B · COUNT(*) は、注文のない顧客の NULL で埋められた行を 1 と数えるから
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。