コード:私はランクランク関数をランダムと他のdbフィールドよりも使用できますか?
答えて
を取得するために、ランダムな番号と名前を結合したい
select name,rank() over (order by name asc) as rank,
ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT)) AS [RandomNumber]
from Student
あなただけではなくrow_number()
を使用してのrank()
で乱数を使用したい理由を私は知りませんが、それが行きますこのような何か:
rextester:http://rextester.com/OLKI98516
create table student(
id int not null identity(1,1) primary key
, name varchar(255) not null
);
insert into student values
('Santosh'),('Kumar'),('Reddy'),('Badugula'),('SqlZim')
,('Emma'),('Xandra'),('Naida'),('Daria'),('Colby'),('Yetta')
,('Zena'),('Deacon'),('Francis'),('Lilah'),('Risa'),('Lee')
,('Vanna'),('Molly'),('Destiny'),('Tallulah'),('Meghan')
,('Deacon'),('Francis'),('Daria'),('Colby');
select
name
, RandomNumber = abs(cast(cast(newid() as varbinary) as int))
, Name_w_RandomNumber = concat(name, '_', abs(cast(cast(newid() as varbinary) as int)))
, rank = rank() over (order by name asc)
, row_number = row_number() over (order by name asc)
, rank_w_Rand = rank() over (order by name,abs(cast(cast(newid() as varbinary) as int)) asc)
from student
結果:
+----------+--------------+---------------------+------+------------+-------------+
| name | RandomNumber | Name_w_RandomNumber | rank | row_number | rank_w_Rand |
+----------+--------------+---------------------+------+------------+-------------+
| Badugula | 1105357025 | Badugula_1036749632 | 1 | 1 | 1 |
| Colby | 1125329440 | Colby_1442709274 | 2 | 2 | 2 |
| Colby | 1891932149 | Colby_1045919975 | 2 | 3 | 3 |
| Daria | 1494409363 | Daria_112566484 | 4 | 4 | 4 |
| Daria | 666341314 | Daria_262264162 | 4 | 5 | 5 |
| Deacon | 1530588472 | Deacon_1783529467 | 6 | 6 | 6 |
| Deacon | 350443065 | Deacon_1150932866 | 6 | 7 | 7 |
| Destiny | 2007923301 | Destiny_793747374 | 8 | 8 | 8 |
| Emma | 435476101 | Emma_659930976 | 9 | 9 | 9 |
| Francis | 1638790395 | Francis_2132056162 | 10 | 10 | 10 |
| Francis | 793873129 | Francis_756254272 | 10 | 11 | 11 |
| Kumar | 20071275 | Kumar_2007808448 | 12 | 12 | 12 |
| Lee | 2069120264 | Lee_837143565 | 13 | 13 | 13 |
| Lilah | 1319087807 | Lilah_605243166 | 14 | 14 | 14 |
| Meghan | 487733175 | Meghan_1884481541 | 15 | 15 | 15 |
| Molly | 2086860257 | Molly_1914281986 | 16 | 16 | 16 |
| Naida | 169335218 | Naida_719205571 | 17 | 17 | 17 |
| Reddy | 528578158 | Reddy_1297094295 | 18 | 18 | 18 |
| Risa | 1826403411 | Risa_1530611023 | 19 | 19 | 19 |
| Santosh | 723134579 | Santosh_487617337 | 20 | 20 | 20 |
| SqlZim | 937324776 | SqlZim_738072767 | 21 | 21 | 21 |
| Tallulah | 521881065 | Tallulah_1717653898 | 22 | 22 | 22 |
| Vanna | 1508284361 | Vanna_1620612208 | 23 | 23 | 23 |
| Xandra | 532483290 | Xandra_493053714 | 24 | 24 | 24 |
| Yetta | 1735945301 | Yetta_1548495144 | 25 | 25 | 25 |
| Zena | 311372084 | Zena_1429570716 | 26 | 26 | 26 |
+----------+--------------+---------------------+------+------------+-------------+
あなたの行番号は名前だけに基づいています、OPは名前が等しいときramdomnessを求めました。 –
@joeCこれは、要求された 'rank_w_Rand'結果の下に含まれています。 – SqlZim
ここでは、私がコメントしていたクエリですが、かなり機能的ではありません。あなたがここに尋ねたのは、私が正しいとすれば、それを実行するたびに違う結果を得るたびに自分自身をランダムな値にすることは決してありません。
select name,
rank() over (order by name,
ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT))) asc) as rank
from Student
EDIT:CTEが乱数を表示するようにして、それはまだABSを使用しているとき、あなたはそれを検討する必要があるでしょうになる場合、NEWID()は必ずユニークではなく、保証されています。
with cteQry As
( select name, ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT))) NewIdVal
from Student
)
select name, NewIdVal,
rank() over (order by name, NewIdVal asc) as rank
from cteQry
- 1. ランク関数をExcelで使用する
- 2. MySQLのランク関数はランクを割り当てます
- 3. ランク関数を使用する
- 4. Javascriptでランダム関数を使用しようとしていますか?
- 5. openerpで関数フィールドとdbフィールドを計算する方法
- 6. SQL関数の結果をDoctrineのフィールドとして使用できますか?
- 7. .each()関数を使用しても.on()関数を使用できません
- 8. Lucene.Net他のフィールドよりも1フィールドをより多く与える
- 9. ラケットのランダム関数(より複雑な)
- 10. ランダム関数の値をリストで参照できますか?
- 11. ラムダ関数をどのように使用できますか?
- 12. 他の関数でLocation Manager関数の値を使用する
- 13. MariaDbのランク関数の使い方
- 14. 最も近いフィールドと.find関数を使用してテーブルヘッダーフィールドを取得しようとしています
- 15. DataTableを使用するよりも速くSqlBulkCopyを使用できますか?
- 16. Fortranで再帰関数を使用するときのランダムな大きな浮動小数点エラーとNaN
- 17. 戻り値に仮想関数を使用できますか?
- 18. 動的クエリよりもテーブル変数を使用するその他のメソッド
- 19. Prologを他の言語よりも使用する利点は何ですか?
- 20. ランク関数効率
- 21. 数値が始まるフィールドを使用するmongo db
- 22. Cの静的関数は他のファイルからもアクセスできます
- 23. HandlerThreadを他の類似クラスよりもベストに使用する
- 24. JavaScriptのバグ、つまりNANを返す関数(他のブラウザでも使用可能)
- 25. Rのforループや他の関数を使用しますか?
- 26. Jeditable関数はどのように使用できますか?
- 27. オブジェクトをOOJSの関数として使用できますか?
- 28. javascript、変数は値でも関数でもありますか?
- 29. js関数の変数を使用して他の関数を使用する
- 30. oracleでTRIM関数とTRUNC関数を使用できますか?
名前に追加する文字としてnewidをキャストするだけで済みます。それはサブクエリでよりきれいに見えるかもしれませんが、私はそれがなければ動作すると思います。 –
ps私はこれをやろうと思っていません。質問結果を再現できるようにしたいと思います。 –
あなたが私の質問を正しく受けているかどうか分かりません名前と生成されている乱数に基づいてランクを付けたいのですが、あなたが言ったことを質問してくれますか#Joe C –