Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将生成客户名称列表和每个客户的平均订单值的查询_Sql_Sqlite - Fatal编程技术网

Sql 将生成客户名称列表和每个客户的平均订单值的查询

Sql 将生成客户名称列表和每个客户的平均订单值的查询,sql,sqlite,Sql,Sqlite,我有一个数据库,我需要创建一个查询来检索客户名称列表和每个客户的平均订单值。 我试过: 选择c.customer\u name,AVG(COUNT(o.order\u id)*f.price)作为“avgorderprice” 来自客户c 左连接订单o ON o.customer\u id=c.customer\u id o.order\u id=fio.order\u id上的内部联接F\u in\u或fio fio上的内连接薄膜f.film_id=f.film_id; 这是我的数据库结构:

我有一个数据库,我需要创建一个查询来检索客户名称列表和每个客户的平均订单值。 我试过:

选择c.customer\u name,AVG(COUNT(o.order\u id)*f.price)作为“avgorderprice”
来自客户c
左连接订单o ON o.customer\u id=c.customer\u id
o.order\u id=fio.order\u id上的内部联接F\u in\u或fio
fio上的内连接薄膜f.film_id=f.film_id;
这是我的数据库结构:


但是我有一个错误,有什么问题吗?

我认为这应该行得通

SELECT c.customer_name, AVG(f.price) AS 'avgorderprice' FROM Customers c LEFT JOIN Orders o ON o.customer_id = c.customer_id LEFT JOIN F_in_Or fio ON o.order_id = fio.order_id LEFT JOIN Films f ON fio.film_id = f.film_id;
但是我犯了一个错误,会有什么错呢

您试图在聚合函数中使用聚合函数Count,并且滥用了聚合函数

i、 e.-
>滥用聚合函数COUNT()

此外,您没有对结果进行分组,因此将获得全部平均值,而不是每位客户的平均值

  • 聚合函数在组上工作默认值为all,除非
    GROUP BY
    子句将行放入组中
您可以使用
sum(f.price)/COUNT(*)代替
AVG(COUNT(o.order\u id)*f.price)
。但是,有一个平均聚合函数
avg
。所以平均价格(f.price)更简单

此外,由于您需要每个客户的平均值,因此您需要使用一个
GROUP BY c.customer
子句

因此,您可以使用:-

SELECT 
    c.customer_name, 
    avg(f.price) AS 'avgorderprice' --<<<<< CHANGED
    FROM Customers c 
    LEFT JOIN Orders o ON o.customer_id = c.customer_id 
    INNER JOIN F_in_Or fio ON o.order_id = fio.order_id 
    INNER JOIN Films f ON fio.film_id = f.film_id 
    GROUP BY c.customer_name --<<<<< ADDED
;
选择
c、 客户名称,

avg(f.price)作为“avgorderprice”——表的模式会有所帮助。请添加有关您收到的错误消息的更多详细信息