PostgreSQL:每小时生成一个随机数

时间:2016-08-02 19:26:57

标签: sql 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';

我希望它每小时生成一个新的数字

期望的输出

count    id
23     432543

以上ID应每小时更新一次。

2 个答案:

答案 0 :(得分:0)

我猜你想要这个:

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;

此处没有“随机”数字。如果您确实想将其转换为标识符,请使用YYYYMMDDHH格式或使用小时作为随机数生成器的种子。

答案 1 :(得分: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';
相关问题