计算特定月份 mysql 的平均支出(金额 spent/person)
Calculating average spending (amount spent/person) in a particular month mysql
我的数据库中有三个 table 模式:
items (itemID: integer, description: string, price: integer)
orders (orderID: integer, itemID: integer, aID: integer, customerID: integer, date: date)
customers (customerID: integer, fName: string, lName: string)
我需要计算给定月份(2013-03-01 和 2013-03-31 之间)所有客户花费的平均金额,即总金额 spent/total 没有客户,
为此,我需要计算在这些日期之间购买的所有产品的价格总和(使用来自订单中的 itemID 和商品中的价格的信息),我使用以下代码完成了此操作:
SELECT SUM(price) FROM items WHERE itemID IN( SELECT itemID FROM orders WHERE date BETWEEN '2013-03-01' AND '2013-03-31' )
但我无法弄清楚如何将此数字除以客户总数(可以通过计算客户 table 上的客户数量找到 - 唯一键是客户 ID)
有人能帮忙吗?
谢谢!
您可以使用子查询:
SELECT SUM(i.price)/(SELECT COUNT(*) FROM customers)
FROM items i
LEFT JOIN orders o ON i.itemID = o.itemID
AND o.date BETWEEN '2013-03-01' AND '2013-03-31'
WHERE o.itemID IS NOT NULL
我的数据库中有三个 table 模式:
items (itemID: integer, description: string, price: integer)
orders (orderID: integer, itemID: integer, aID: integer, customerID: integer, date: date)
customers (customerID: integer, fName: string, lName: string)
我需要计算给定月份(2013-03-01 和 2013-03-31 之间)所有客户花费的平均金额,即总金额 spent/total 没有客户, 为此,我需要计算在这些日期之间购买的所有产品的价格总和(使用来自订单中的 itemID 和商品中的价格的信息),我使用以下代码完成了此操作:
SELECT SUM(price) FROM items WHERE itemID IN( SELECT itemID FROM orders WHERE date BETWEEN '2013-03-01' AND '2013-03-31' )
但我无法弄清楚如何将此数字除以客户总数(可以通过计算客户 table 上的客户数量找到 - 唯一键是客户 ID)
有人能帮忙吗? 谢谢!
您可以使用子查询:
SELECT SUM(i.price)/(SELECT COUNT(*) FROM customers)
FROM items i
LEFT JOIN orders o ON i.itemID = o.itemID
AND o.date BETWEEN '2013-03-01' AND '2013-03-31'
WHERE o.itemID IS NOT NULL