我正在学习SQL,但一直试图解决一项练习。希望有人能给我一些帮助。
我有一个带有发票表和客户表的数据库。
我正在尝试获取每个客户每年的平均销售额。因此,如果客户1有4年的数据我需要他的总销售额/ 4,则客户2有6年的数据总销售额/ 6等等。
我的问题是,客户一年可以有多张发票。
即该客户有4年的数据,但2010年有3张发票,2012年有2张发票
我能够计算出每年的发票数量,但是却无法获得客户出现在数据中的单个年份的计数。我知道我在“求和年”字段中遇到的问题,但是想不出解决方法。我可能也使我的代码复杂化了。
SELECT
i.BillingCountry,
c.CustomerId,
strftime('%Y',i.InvoiceDate) AS Year,
c.FirstName || " " || c.LastName AS [Customer Name],
COUNT(strftime('%Y',i.InvoiceDate)) AS NumberYears,
COUNT(c.CustomerId) AS [Sum Years],
ROUND(SUM(i.Total)/COUNT(strftime('%Y',i.InvoiceDate)),2) AS [Average]
FROM
invoices AS i
INNER JOIN
customers AS c
ON
i.CustomerId = c.CustomerId
WHERE
c.CustomerId = 1
GROUP BY
c.CustomerId,
Year
ORDER BY
c.CustomerId
这是我的结果:
这些是我正在使用的表的两个示例:
客户:
发票: