首页 > 解决方案 > 我不明白什么是聚合函数以及它如何应用于我的查询

问题描述

我被困在这个任务上,我不明白为什么当我包含cityand时我的查询不输出数据grade。这是问题:

显示每个客户的总购买量,包括客户的姓名、城市和等级。

这是原表

我的回答是:

SELECT cust_name,city,grade,SUM(purch_amt)
FROM customer, orders
GROUP BY cust_name
WHERE customer.cust_id = orders.customer_id;

这显示一个错误,说

您的查询不包含作为聚合函数的一部分的指定表达式“城市”。

标签: sql

解决方案


切勿FROM子句中使用逗号。 始终使用正确的、明确的、标准的、可读的JOIN语法:

SELECT c.cust_name, c.city, c.grade, SUM(o.purch_amt)
FROM customer c JOIN
     orders o
     on c.cust_id = o.customer_id
GROUP BY c.cust_name, c.city, c.grade;

请注意,我添加了表别名,因此查询更易于编写和阅读。此外,这些 GROUP BY列与SELECT.


推荐阅读