上位10レコードなど、指定した数のデータを抽出する
「上位10名を抽出する」と言うような、特定フィールドの値を元に上位/下位の任意レコードを取得するにはSELECT命令にTOP指定を組み合わせて使用する。
TOP指定の利用
SELECT TOP n * FROM テーブル ORDER BY フィールド;
取り出し元テーブル
select top 3 * from 社員 order by 年齢;
select top 3 * from 社員;
ORDER BY句を指定しないと元テーブルのにあるデータを上から3件取得するようだ。
select top 3 * from 社員 order by 所属;
n個目のレコードと同じ値を「n+1個目」のレコードも持っている場合には、同一順位と見なし、n個目のレコードと同じ値を持つレコードも抽出される。
上記例だと、トップ2つのレコードは「営業1課」のレコードで、3つめは「営業2課」となるが、複数あるのでそれらは同一順位となるため、抽出される。
上位nパーセントのレコードを抽出する
TOP n PERCENT指定の利用
SELECT TOP n PERCENT * FROM テーブル ORDER BY フィールド;
取り出し元テーブル
select top 30 percent * from SQL商品
ORDER BY句を指定しないと元テーブルのにあるデータを上から30%分取得するようだ。
select top 30 percent * from SQL商品 ORDER BY 単価;
上位30%のデータが10レコード中4個あるため、それらが全て抽出される。
select top 30 percent * from SQL商品 ORDER BY 単価 desc;