2016-08-02 16 views
0

Gibt es eine Möglichkeit, eine Zufallszahl für die Zählung zu generieren? Ich möchte es als eine eindeutige Kennung für eine Zählung verwenden, die ich mache. Hier ist eine Beispielabfrage:PostgreSQL: jede Stunde eine Zufallszahl generieren

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'; 

Ich will es eine neue Nummer jede Stunde zu erzeugen.

Wunsch Ausgang

count id 
23  432543 

Above-ID sollte jede Stunde aktualisiert.

+0

Datenabtastwert und die gewünschten Ergebnisse wirklich helfen würde, Sie eine Antwort auf die Wirkung von 'random()' nicht einfach vorausgesetzt werden soll. –

+0

Generieren Sie den COUNT jede Stunde? –

+2

Warum verwenden Sie nicht das aktuelle Datum und die aktuelle Stunde als eindeutige Kennung? Die Generierung einer Zufallszahl würde nicht sicherstellen, dass sie eindeutig ist. –

Antwort

0

Ich vermute, dass Sie dies wünschen:

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; 

Es gibt keine "Zufallsgenerator" in diesem. Wenn Sie dies wirklich in einen Bezeichner umwandeln möchten, verwenden Sie ein JJJJMMTTHH-Format oder verwenden Sie die Stunde als Startwert für den Zufallszahlengenerator.

0

können Sie dies versuchen

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'; 
Verwandte Themen