我正在尝试为问题编写PostgreSQL查询:
2011年购买了多少产品?(2011年购买意味着订单描述在2011年“完成”)。
到目前为止,我有一个问题:
SELECT
COUNT(product.id)
FROM
product
JOIN orderitem ON
productid = product.id
JOIN "order" ON
"order".id = orderitem.orderid AND
EXTRACT(year FROM orderplaced) = 2011
JOIN orderstatus ON
orderstatus.orderid = "order".id
JOIN orderstatusdescription ON
orderstatusdescription.id = orderstatusdescriptionid AND
orderstatusdescription.description = 'Completed';
但结果是231410个产品,而数据库只包含1000个。逻辑上使用
DISTINCT(product.id)
会导致计数1000。我不知道我做错了什么。
最佳答案
安德烈斯·奥拉特(Andres Olrate)略微修改的查询:
SELECT
COUNT(orderitem.productid)
FROM
orderitem
JOIN "order" ON
"order".id = orderitem.orderid
JOIN orderstatus ON
orderstatus.orderid = "order".id
JOIN orderstatusdescription ON
orderstatusdescription.id = orderstatusdescriptionid
WHERE
EXTRACT(year FROM orderplaced) = 2011
AND orderstatusdescription.description = 'Completed';
关于sql - SQL查询给出太多结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15233386/