SQL 标准将双引号视为封闭的“分隔标识符”,这意味着双引号表示其中的名称是列名或表名,或其附近。您需要在字符串周围使用单引号。
许多基于 Unix 的 DBMS 对双引号中的字符串相当灵活。显然,您使用的不是,或者没有配置为。
您还应该避免使用该FROM computer, order
符号。您需要知道它的存在以防您阅读真正的旧代码,但您应该始终在 SQL 中使用显式 JOIN 表示法。所以,如果你需要加入,你应该写:
SELECT order.orderid, AVG(order.quantity) AS AvgDesktopsSold
FROM computer
JOIN order ON computer.computerid = order.computerid
WHERE order.type_pc = 'desktop';
您还应该使用 GROUP BY 子句。任何非聚合列都应该在 GROUP BY 子句中。
SELECT order.orderid, AVG(order.quantity) AS AvgDesktopsSold
FROM computer
JOIN order ON computer.computerid = order.computerid
WHERE order.type_pc = 'desktop'
GROUP BY order.orderid;
但是,由于您没有使用 Computer 表中的任何列(更不用说 Desktop 或 Laptop 表),因此您甚至不需要 JOIN:
SELECT orderid, AVG(quantity) AS AvgDesktopsSold
FROM order
WHERE type_pc = 'desktop'
GROUP BY orderid;
现在,这将为您提供“每个桌面订单的平均桌面数量”的答案,但该平均值也是数量。所以,你真的不需要orderid
选择列表中的 ,或者 GROUP BY 子句毕竟:
SELECT AVG(quantity) AS AvgDesktopsSold
FROM order
WHERE type_pc = 'desktop';