SQL-计算每个客户的发票年数以获得每年的平均销售额

时间:2020-08-21 04:31:40

标签: sql sqlite

我正在学习SQL,但一直试图解决一项练习。希望有人能给我一些帮助。

我有一个带有发票表和客户表的数据库。

我正在尝试获取每个客户每年的平均销售额。因此,如果客户1有4年的数据我需要他的总销售额/ 4,则客户2有6年的数据总销售额/ 6等等。

我的问题是,客户一年可以有多张发票。

即该客户有4年的数据,但2010年有3张发票,2012年有2张发票

enter image description here

我能够计算出每年的发票数量,但是却无法获得客户出现在数据中的单个年份的计数。我知道我在“求和年”字段中遇到的问题,但是想不出解决方法。我可能也使我的代码复杂化了。

 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

这是我的结果:

enter image description here

这些是我正在使用的表的两个示例:

客户:

enter image description here

发票:

enter image description here

0 个答案:

没有答案
相关问题