SQL Server
 Computer >> コンピューター >  >> プログラミング >> SQL Server

SQL ServerのSELECT TOPコマンドの使い方を徹底解説

SQL Serverでは、SELECT TOPコマンドを使用することで、1つまたは複数のテーブルからレコードを取得し、固定値または割合(パーセンテージ)に基づいて返されるレコード数を制限できます。大量のデータから上位の一部だけを取り出したい場合に非常に便利な機能です。

SELECT TOPコマンドの基本構文

SELECT TOP (値) [PERCENT] [WITH TIES]
式
FROM テーブル
[WHERE 条件]
[ORDER BY 式 [ASC | DESC]];

パラメータと引数の説明

TOP (値)

指定した値に基づいて結果を返します。例えば「TOP(10)」と指定すると、結果セットの先頭10行が返されます。

PERCENT

省略可能なオプションです。指定した場合、先頭の行は結果セット全体に対する割合に基づいて返されます。例えば「TOP(10) PERCENT」は、結果セットの上位10%の値を返します。

WITH TIES

省略可能なオプションです。この句を使用すると、結果セットの最終行と同じ値を持つ行も併せて返されます。そのため、TOPで指定した行数よりも多くの行が返される場合があります。

取得したい列または計算値を指定します。

テーブル

レコードを取得する対象のテーブルです。FROM句には少なくとも1つのテーブルを指定する必要があります。

WHERE 条件

省略可能です。レコードが選択されるために満たすべき条件を指定します。

ORDER BY 式

省略可能です。結果を並べ替えるために使用します。「ASC」は昇順、「DESC」は降順を意味します。

使用例1:TOPキーワードを使う

SELECT TOP(5)
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;

上記の例では、姓が「Anderson」である従業員テーブル(nhanvien)から、最初の5件のレコードを取得します。仮に同じ姓「Anderson」を持つレコードが他にも存在していても、SELECT文の結果には含まれません。

このクエリにWITH TIES句を追加すると、次のように書き換えられます。

SELECT TOP(5) WITH TIES
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;

この例では、結果セットの最終行と同じ値を持つ行も一緒に返されます。並び順の境界線上にある同順位のデータを漏れなく取得したい場合に有効です。

使用例2:TOP PERCENTキーワードを使う

SELECT TOP(10) PERCENT
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;

この例では、姓が「Anderson」である従業員の中から、結果セットの上位10%にあたるレコードが返されます。残りの90%は結果に含まれません。

SELECT TOP(10) PERCENT WITH TIES
nhanvien_id, ho, ten
FROM nhanvien
WHERE ho = 'Anderson'
ORDER BY nhanvien_id;

WITH TIESを組み合わせた場合、返される結果には最終行と同じ値を持つ行も含まれるため、実際の結果セットは10%を超えることがあります。

まとめ

SELECT TOPコマンドを使いこなすことで、必要な件数だけ効率的にデータを取得できます。単純な件数指定だけでなく、PERCENTによる割合指定やWITH TIESによる同順位データの取得など、用途に応じてオプションを組み合わせるのがポイントです。

  1. SQL ServerのROUND関数の使い方を解説!構文・パラメータ・実例まとめ

    この記事では、SQL ServerのROUND()関数の使い方を、構文と具体的な使用例とともに詳しく解説します。数値の丸め処理の仕組みをしっかり理解して、日々のクエリ作成や集計業務に活かしましょう。 ROUND関数とは ROUND関数は、SQL Serverにおいて数値を指定した桁数で丸めるために使用される関数です。金額や割合などの表示を整えたい場面でよく使われます。 基本構文 SQL ServerでROUND関数を使用する際の構文は以下のとおりです。 ROUND(number, decimal, operation) パラメータの説明 number:丸めの対象となる数値。 decim

  2. SQL ServerのINTERSECT演算子とは?構文と使い方を実例付きで解説

    SQL Server(Transact-SQL)における INTERSECT演算子 は、2つのデータセット(SELECT文)の両方に共通して存在するレコードだけを返すために使用されます。片方のクエリにのみ存在し、もう片方には存在しないレコードは、INTERSECTの結果セットから自動的に除外されます。 INTERSECTクエリのイメージ INTERSECTクエリが返す結果のイメージ図 図の説明: INTERSECTクエリは、ベン図の中央にある青く塗りつぶされた領域のレコードを返します。これらは dataset1 と dataset2 の両方に存在するレコードです。 なお、INTERSECT内