2016-08-02 7 views
0

カウントの乱数を生成する方法はありますか?私はそれを私がやっている数のための一意の識別子として使いたいと思う。ここではサンプルクエリは次のとおりです。PostgreSQL:毎時乱数を生成する

SELECT COUNT(distinct bt.id) AS count, 
     <insert unique id here>  
FROM boats bt 
WHERE bt.created_at >= current_date AND 
     bt.created_at < current_date + INTERVAL '1 day' AND 
     bt.state != 'deactivated'; 

私はそれが時間ごと新しい番号を生成したいです。 IDの上

所望の出力

count id 
23  432543 

は時間ごとに更新する必要があります。

SELECT h.hh, COUNT(distinct bt.id) AS count, 
FROM generate_series(0, 23) h(hh) LEFT JOIN 
    boats bt JOIN 
    ON extract(hour from bt.created_at) = h.hh AND 
     bt.created_at >= current_date AND 
     bt.created_at < current_date + INTERVAL '1 day' AND 
     bt.state <> 'deactivated' 
GROUP BY h.hh 
ORDER BY h.hh; 

ない「ランダム」数はこの中にありません:

+0

を試すことができ、本当にあなたは、単に ''ランダム()の効果に対する答えを望んでいないと仮定すると、役立つだろう。 –

+0

時間ごとにCOUNTを生成しますか? –

+2

なぜ現在の日付+現在の時刻を一意の識別子として使用しないのですか?乱数を生成しても、それが一意であるとは限りません。 –

答えて

0

私はあなたがこれをしたいことを推測しています。本当にこれを識別子に変換する場合は、YYYYMMDDHH形式を使用するか、時間を乱数ジェネレータのシードとして使用します。

0

あなたは、サンプルデータ、所望の結果、この

SELECT COUNT(distinct bt.id) AS count, 
     to_char(now(),'YYYYMMDDHH24')::integer AS ID 
FROM boats bt 
WHERE bt.created_at >= current_date AND 
     bt.created_at < current_date + INTERVAL '1 day' AND 
     bt.state != 'deactivated';