SQLで取得したレコードをグループに分ける

NTILE関数を使う
例えば、4グループに分けたい場合は
SELECT id,
NTILE(4) OVER(ORDER BY id DESC) AS a
FROM test
とすると、12レコードある場合は、1~4が均等にふられる
https://johobase.com/sqlserver-rank-denserank-rownumber-ntile/
ランダムに4グループに分けたい場合は
以下で行けそう(詳細なテストはしていない)
SELECT TOP 100 PERCENT
id,
NTILE(4) OVER(ORDER BY id DESC) AS a
FROM id
ORDER BY NEWID()
topとorder by newidでランダムを作れる
100%で全件取得し、4グループに分けるイメージ

タイトルとURLをコピーしました