sql >> データベース >  >> RDS >> PostgreSQL

一意の値を持つPostgresqlSELECTランダム

    あなたの質問は次のように言い換えることができますか:

    「ランダムに選択された10のプロバイダーのそれぞれについて、そのプロバイダーが提供するランダムに選択された取引を1つ見つけます」?

    もしそうなら、それはあなたに何をすべきかをほとんど教えてくれます。 2つのレイヤーが必要です。1つのパスで10のプロバイダーをランダムに選択し、次に1つのパスでプロバイダーごとに1つのランダムな取引を選択します。

    与えられたダミーデータ:

    create table spam ( deal text, provider text );
    
    insert into spam(deal,provider) 
    SELECT prov_id||n::text, prov_id FROM (
        SELECT chr(x) AS prov_id from  generate_series(97, 92+26) x) y 
    CROSS JOIN generate_series(1,10) n;
    
    select provider FROM spam GROUP BY provider ORDER BY random() LIMIT 10;
    

    動作するものは次のとおりです:

    SELECT
     (SELECT deal FROM spam WHERE spam.provider = sel_prov.provider ORDER BY random() LIMIT 1),
     sel_prov.provider
    FROM (select provider FROM spam GROUP BY provider ORDER BY random() LIMIT 10) sel_prov;
    

    ...上記のフレーズをSQLとして実装するだけです。それが速いかどうかわからない。アイデアが浮かびます。

    上記の言い換えが正しくない場合は、サンプルデータと例、または説明の詳細を使用して質問を明確にしてください。



    1. Oracle Data Access FileNotFound:Oracle.DataAccess.Common.Configuration.Section.xsd

    2. 非オブジェクトのメンバー関数rowCount()の呼び出し

    3. SelectForUpdateをEFCoreに実装する方法

    4. 複数のdb列にインデックスを付けるコストはいくらですか?