最大値レコード以外のすべてのレコードを取得したい。そのためのクエリを提案してください。
たとえば、(フィルターにAVGフィールドを使用しています)
SNO Name AVG
1 AAA 85
2 BBB 90
3 CCC 75
クエリは、1 番目と 3 番目のレコードのみを返す必要があります。
最大値レコード以外のすべてのレコードを取得したい。そのためのクエリを提案してください。
たとえば、(フィルターにAVGフィールドを使用しています)
SNO Name AVG
1 AAA 85
2 BBB 90
3 CCC 75
クエリは、1 番目と 3 番目のレコードのみを返す必要があります。
以下のクエリを使用します。
select * from tab where avg<(select max(avg) from tab);
次のようなランキング関数を使用できますDENSE_RANK
。
WITH CTE AS(
SELECT SNO, Name, AVG,
RN = DENSE_RANK() OVER (ORDER BY AVG DESC)
FROM dbo.TableName
)
SELECT * FROM CTE WHERE RN > 1
(SQL Server >= 2005 を使用している場合)
これを試して
SELECT SNO, Name, AVG
FROM TableName
WHERE AVG NOT IN (SELECT MAX(AVG)
FROM TableName )