SQL选择:如何乘一列带有ID的计数

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

我有以下的(这里是简化的)数据库,并希望得到每月最高收入。

发票 - 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),但它不工作。有任何想法吗?谢谢!

mysql sql
1个回答
1
投票

我想你想:

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繁殖。另外请注意,该查询引入表别名,以便查询更容易编写和阅读。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.