我在完成我的最后一个问题时遇到了一些麻烦。如果有人能提供帮助,我会非常感激。
查询4: 编写并运行一个SQL语句,按区域代码按平均余额的降序显示客户数和平均客户余额。
SELECT
SELECT CUS_AREACODE AS "Area Code", COUNT(CUS_CODE) "# of Customers", ROUND(AVG(CUS_BALANCE),2) "Average Balance",
FROM CUSTOMER
ORDER BY CUS_BALANCE DESC;
还有第二张表CUSTOMER_2,我不知道如何加入这个东西。代码不再起作用了。我一直在试图加入,现在它告诉我,我错过了FROM的表达式。 TIA
Columns for tables
CREATE TABLE CUSTOMER (
CUS_CODE NUMBER PRIMARY KEY,
CUS_LNAME VARCHAR(15) NOT NULL,
CUS_FNAME VARCHAR(15) NOT NULL,
CUS_INITIAL CHAR(1),
CUS_AREACODE CHAR(3) DEFAULT '615' NOT NULL CHECK(CUS_AREACODE IN ('615','713','931')),
CUS_PHONE CHAR(8) NOT NULL,
CUS_BALANCE NUMBER(9,2) DEFAULT 0.00,
CONSTRAINT CUS_UI1 UNIQUE(CUS_LNAME,CUS_FNAME));
CREATE TABLE CUSTOMER_2 (
CUS_CODE NUMBER PRIMARY KEY,
CUS_LNAME VARCHAR(15) NOT NULL,
CUS_FNAME VARCHAR(15) NOT NULL,
CUS_INITIAL CHAR(1),
CUS_AREACODE CHAR(3),
CUS_PHONE CHAR(8));
正如所建议的那样,我相信我应该做一个联盟,但我不确定在我创建联盟之后如何编码
SELECT CUS_CODE, CUS_AREACODE
FROM CUSTOMER
UNION ALL
SELECT CUS_CODE, CUS_AREACODE
FROM CUSTOMER_2
之后我几乎被困住了。我是否需要将联合转换为新表,然后使用我的原始代码?
答案 0 :(得分:0)
您必须将两个表联合起来(请注意列数和顺序应该相同),然后将其用作子查询,然后根据需要获取count / avg。请注意,我已从表2中添加了CUS_BALANCE,因为我们希望根据您的数据进行平均,检查和修改。
Date
注1:由于您使用的是聚合函数count / avg,您也必须使用SELECT sq.CUS_AREACODE AS "Area Code"
, COUNT(sq.CUS_CODE) "# of Customers"
, ROUND(AVG(sq.CUS_BALANCE),2) "Average Balance"
FROM (SELECT CUS_CODE
, CUS_AREACODE
, CUS_BALANCE
FROM CUSTOMER
UNION ALL
SELECT CUS_CODE
, CUS_AREACODE
, CUS_BALANCE
FROM CUSTOMER_2) as sq --alias to the subquery
GROUP BY sq.CUS_AREACODE --required for aggregate functions
ORDER BY sq.CUS_AREACODE
, sq.CUS_BALANCE DESC;
子句,否则会导致错误。