重複の可能性:
SQLで行をランダムに選択する方法は?
--Teradata12に--Transaction_IDとStore_nbrを持つテーブルTXNがあるとします。また、Store_nbrとn_samplesを持つテーブルSAMPがあるとします。
TXNからn_samplesTransaction_IDのサンプルを取得するとします。つまり、SAMPテーブルで、TXNテーブルから取得されるtransaction_idサンプルの数を駆動できるようにする必要があります。例えば、
TXN
Transaction_ID Store_nbr
1 1
2 1
1 2
2 2
3 2
...と...
SAMP
store_nbr n_samples
1 2
2 2
3 1
では、SQL(これはTeradata、ところで)をどのように伝えることができますか?ストア1のtransaction_Idの2つのサンプル、ストア2のtransaction_Idの2つのサンプル、およびストア3のtransaction_Idの1つのサンプルを教えてください。
Teradataには、条件付きサンプルの概念があります。
select a,b
from foo
sample when a=1 then 5
when a=2 then 10
when a=3 then 7
end
...必要に応じてcodegenメソッドを使用して作成できます(数千のストアがあります)。
SAMPテーブルはいつでも自由に変更できます。