2016-05-28 3 views
0

SQL Server上にProductsテーブルがあります。 sales_countでランク付けされた上位10行からランダムな行を選択するにはどうすればよいですか?sales_countでランク付けされたテーブルの上位10行からランダムな行を選択してください

方法select random rowsのための答えを見つけた後、これは私がこれまで持っているものです。

SELECT * FROM (
    SELECT TOP 1 * FROM 
     (
     SELECT TOP 10 * 
     From Products 
     ORDER BY "sales_count" DESC 
     ) a 
    ORDER BY NEWID()) b 
    ) 

しかし、私はそれが正しいだか分かりませんか?

答えて

3

ご使用のバージョンにサブクエリのレイヤーが1つ追加されています。だから、これは動作するはずです、列および表が正しいと仮定すると:

SELECT TOP 1 p.* 
FROM (SELECT TOP 10 p.* 
     FROM Products p 
     ORDER BY "sales_count" DESC 
    ) p 
ORDER BY NEWID(); 

あなたが公正になりたいと思った場合、あなたはWITH TIESが追加される場合があります:

SELECT TOP (1) p.* 
FROM (SELECT TOP (10) WITH TIES p.* 
     FROM Products p 
     ORDER BY "sales_count" DESC 
    ) p 
ORDER BY NEWID(); 
関連する問題