代码之家  ›  专栏  ›  技术社区  ›  Matt

PostgreSQL SQL错误[42703]:错误:列“minute”不存在

  •  0
  • Matt  · 技术社区  · 6 年前

    我有以下查询,得到以下错误:

    SQL错误[42703]:错误:列“minute”不存在

    但是我没有引用任何名为 minute .

    SELECT customer_id,
    MAX(created_at) last_order_date,
    MAX(created_at) + ((SELECT EXTRACT(MINUTE FROM MAX(created_at)-MIN(created_at)) 
    FROM (SELECT customer_id, created_at
    FROM (SELECT customer_id, created_at, rank() over (partition by customer_id order by created_at desc) lasttwo
    FROM orders) sub
    WHERE sub.lasttwo <= 2
    AND SUM(DATEDIFF(MINUTE,MIN(created_at),MAX(created_at))) > 2) s2) ::text||' minute')::INTERVAL AS nextdate,
    (SELECT AVG(total_price - total_tax) 
    FROM (SELECT customer_id, created_at, total_price, total_tax
    FROM (SELECT customer_id, created_at, total_price, total_tax, rank() over (partition by customer_id order by created_at desc) lasttwo
    FROM orders) sub
    WHERE sub.lasttwo <= 2
    AND SUM(DATEDIFF(MINUTE,MIN(created_at),MAX(created_at))) > 2) s2) nextval 
    FROM orders 
    GROUP BY customer_id
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Matt    6 年前

    需要使用 EXTRACT 而不是 DATEDIFF

    SELECT customer_id,
    MAX(created_at) last_order_date,
    MAX(created_at) + ((SELECT EXTRACT(MINUTE FROM MAX(created_at)-MIN(created_at)) 
    FROM (SELECT customer_id, created_at
    FROM (SELECT customer_id, created_at, rank() over (partition by customer_id order by created_at desc) lasttwo
    FROM orders) sub
    WHERE sub.lasttwo <= 2
    AND SUM(EXTRACT(MINUTE FROM MAX(created_at)-MIN(created_at))) > 2) s2) ::text||' minute')::INTERVAL AS nextdate,
    (SELECT AVG(total_price - total_tax) 
    FROM (SELECT customer_id, created_at, total_price, total_tax
    FROM (SELECT customer_id, created_at, total_price, total_tax, rank() over (partition by customer_id order by created_at desc) lasttwo
    FROM orders) sub
    WHERE sub.lasttwo <= 2
    AND SUM(EXTRACT(MINUTE FROM MAX(created_at)-MIN(created_at))) > 2) s2) nextval  
    FROM orders 
    GROUP BY customer_id