我有以下的(这里是简化的)数据库,并希望得到每月最高收入。
发票 - ID - ORDER_ID - 发行(时间戳)
命令 - ID
的OrderItems - ID - ORDER_ID - article_id的
用品 - ID - 价钱
到目前为止,我得到了以下声明:
Select articles.price * orderItems.order_id as revenue, Extract(month
from invoices.issued)
FROM orderItems
INNER JOIN articles ON orderItems.article_id = articles.id
Inner JOIN orders ON orderItems.order_id = orders.id
Inner JOIN invoices ON orders.id = invoices.order_id
GROUP BY year(issued), month(issued)
Order by revenue DESC Limit 1
由于价格乘以ORDER_ID而应与相应的order_id的计数来乘以实际计算的收入是错误的。我试图执行数(orderItems.order_id),但它不工作。有任何想法吗?谢谢!
我想你想:
SELECT year(i.issued), month(i.issued), SUM(a.price) as revenue,
FROM orderItems oi JOIN
articles a
ON oi.article_id = a.id JOIN
orders o
ON oi.order_id = o.id JOIN
invoices i
ON o.id = i.order_id
GROUP BY year(i.issued), month(i.issued)
ORDER BY revenue DESC
LIMIT 1;
换句话说,这是一个简单的汇总查询。有没有必要 - 永远 - 通过orderid
繁殖。另外请注意,该查询引入表别名,以便查询更容易编写和阅读。