postgresql日期比较:错误:运算符不存在:date> integer

问题描述 投票:1回答:1

谁能帮助我以另一种方式格式化以下postgresql请求?

SELECT count(o.product_id), p.title FROM orders o, products p WHERE 
p.product_id = o.product_id AND o.order_date > current_date - 7 
GROUP BY p.title;

SELECT sum(p.price) AS total, o.order_date from products p, orders o 
WHERE p.product_id = o.product_id AND o.order_date > current_date - 7 
GROUP BY order_date;

我已经使用我的表测试了Postico和PGweb中的请求,并且两个命令都提供了所需的输出,但是当我将它们放入我的代码时,我得到以下错误。

error: operator does not exist: date > integer

这是表模式的副本

orders(id PRIMARY KEY, order_number INTEGER, product_id INTEGER, user_id INTEGER,
tracking_id VARCHAR(50), order_date DATE)

products(product_id PRIMARY KEY, title VARCHAR(200), description VARCHAR(2500),
price NUMERIC(7,2), img TEXT, brand VARCHAR(50), horsepower INTEGER, 
deck_size INTEGER, product_type VARCHAR(5))

orders表中的product_id引用了product中的product_id。

以下是可视化表格的屏幕截图:

postgresql
1个回答
1
投票

我很惊讶您的查询在任何地方运行。如果您想从时间戳中减去7天,您应该使用:

current_date - INTERVAL '7 DAY'

所以使用这个查询:

SELECT
    p.title,
    COUNT(o.product_id)
FROM orders o
INNER JOIN products p
    ON p.product_id = o.product_id
WHERE 
    o.order_date > current_date - INTERVAL '7 DAY'
GROUP BY
    p.title;

注意:我用现代显式内连接替换了隐式的旧学校连接。这是当前编写连接的首选方式。

© www.soinside.com 2019 - 2024. All rights reserved.