在庫の本の数が実在庫の本の数と一致する出版社の名前を選択します。
SELECT pubname, bookcount FROM library WHERE (bookcount, pubnum) IN (SELECT COUNT(*), book.pubnum FROM book GROUP BY pubnum);
在庫の本の数がゼロである出版社の名前は返されません。これはサブクエリーではこの出版社に対する行が返されないからです。
COUNT操作の結果データ型は、次のテーブルで説明するように、ANSIとTeradataセッション モードでは異なります。詳細は、<Teradata Vantage™ SQL関数、式、および述部、B035-1145>を参照してください。
セッション モード | COUNT操作の結果のデータ型 |
---|---|
ANSI | DECIMAL(p,0) pは、数値の精度を表わします。
|
Teradata | INTEGER |
上記のSELECT文と同じ意味になる次のSELECT文では、2つの非相関サブクエリーを使って、以下のように同じ応答セットを返します。
SELECT pub_name, book_count FROM library WHERE (book_count, pub_num) IN (SELECT COUNT(*), pub_num FROM book GROUP BY pub_num) OR NOT IN (SELECT book.pub_num FROM book GROUP BY pub_num) AND book_count = 0;
次のSELECT文は、もっとシンプルできれいにまとまっています。1つの相関サブクエリーを使って、前の問合わせと同じ正確な応答を返します。
SELECT pub_name, book_count FROM library WHERE book_count IN (SELECT count(*) FROM book WHERE book.pub_num = library.pub_num);