谁能帮助我以另一种方式格式化以下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。
以下是可视化表格的屏幕截图:
我很惊讶您的查询在任何地方运行。如果您想从时间戳中减去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;
注意:我用现代显式内连接替换了隐式的旧学校连接。这是当前编写连接的首选方式。