2017-05-03 8 views
-1

テーブルからランダムな別個のデータを選択していますが正常に動作しています。データには都市の列もあります。私は、特定の都市のパーセンテージに関してランダムなレコードを選択したいと思います。テーブルから100を超えるランダムなレコードが必要ですが、それはニューヨークの20%、テキサスの50%、そしてベガスの30%でなければなりません。 、それはあなたがやっているかを理解するためにdificultだ方法の詳細がなければ、このクエリ特定の列にパーセントでランダム選択レコードSQLサーバー

select distinct top 10 
    c.Phone, NEWID() as ArrangeOrder, 
    max(c.city) as 'City', max(c.id), 
    max(c.province) as 'Province', max(c.MediaSourceType), 
    max(c.[PrimarySelfie]) 
from 
    Contestants c (nolock) 
inner join 
    SocialMediaHashTags st (nolock) on c.id = st.contestantid where st.contenttype = 1 
            and c.IsWinner = 0 
            and st.PostDate >= '04-25-2017 00:00:00' 
            and st.PostDate <= '04-25-2017 23:59:59' 
            and c.city is not null 
            and c.Province is not null 
            and c.CityId is not null 
            and c.CityId > 0 
group by 
    c.Phone 
order by 
    NEWID() 

答えて

0

でこれを行うための提案を必要とする

しかし、あなたは自分の要求にクォータをしたい場合、あなたは3つの異なる要求を作ることができますクォータごとに1つずつ、回答の数を制限します。

してくださいは、私はクエリは、質問に関連する正確かどうかはわかりません

+0

テーブルからランダムなトップレコードを取得することですしかし、私はこのクエリのように私は上記のように提供するいくつかのパーセント値を私はテーブルからトップの別個のレコードを返すが、今私はnewyorkの10%のような特定のパーセントでレコードを返すしたいテキサスの –

0

...あなたがPHPやSQL要求のみなどを使用している場合のように、何をやっているの方法の詳細を与えます。 "Vegas"や "Texas"などの値とともに、都道府県の列を持つデータがある場合は、次の操作を実行できます。

select t.* 
from (select t.*, 
      row_number() over (partition by city order by newid()) as seqnum 
     from t 
    ) t 
where (t.city = 'NewYork' and seqnum <= 20) or 
     (t.city = 'Texas' and seqnum <= 50) or 
     (t.city = 'Vegas' and seqnum <= 30); 
+0

テーブルから無作為にトップ10のレコードを取得しています –

+0

この回答のクエリは100レコードを返します。 –

関連する問題