有人可以帮我格式化下面的postgreql请求吗?
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))
订单表中的product_id引用了产品中的product_id。
以下是用于可视化的表格的屏幕截图:
答案 0 :(得分: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;
注意:我用现代的显式内部联接替换了您的隐式,旧式联接。这是当前编写联接的首选方式。