0

我正在尝试使用 Oracle LiveSQL 完成我的数据库编程课程的作业练习。我定义了出现在访问的 2 个表中的每个表中的列。我不明白为什么我会收到错误。我的代码哪里出错了?

SELECT 
    orders.customer_id,
    cust_email,
    COUNT(order_id) AS num_orders
FROM
    oe.customers
    LEFT JOIN oe.orders
        ON oe.customers.customer_id = oe.orders.customer_id
GROUP BY
    customer_id
ORDER BY
    customer_id ASC;

我们正在使用的带有 2 个表格的表格图: 在此处输入图像描述

4

1 回答 1

2

SELECT通常,子句中出现的任何列也必须出现在 中GROUP BY,除非这些列出现在聚合函数中。考虑使用这个版本:

SELECT 
    c.customer_id,
    c.cust_email,
    COUNT(o.order_id) AS num_orders
FROM oe.customers c
LEFT JOIN oe.orders o
    ON c.customer_id = c.customer_id
GROUP BY
    c.customer_id,
    c.cust_email
ORDER BY
    c.customer_id;

另请注意,您遇到的另一个问题customer_id是出现在两个表中的列。您需要一个别名来限定要包含的表的列。

于 2022-02-14T03:21:30.537 回答