MySQL作业,连接两个表

标签 mysql

我在解决硬件上的最后一个问题时遇到了一些麻烦。如果有人可以提供帮助,我将非常感激。

查询 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

在那之后我几乎陷入困境。我是否需要将联合转换为新表,然后使用我的原始代码?

最佳答案

您必须对两个表进行并集(请注意,列数和顺序应该相同),然后将其用作子查询,然后根据需要获取计数/平均值。请注意,我从表 2 中添加了 CUS_BALANCE,因为我们希望将其作为平均值,并根据您的数据进行检查和修改。

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;

注意1:由于您使用的是聚合函数 count/avg,因此您还必须使用 GROUP BY 子句,否则会导致错误。

关于MySQL作业,连接两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33840086/

相关文章:

python - Django Queryset 返回多对多字段中的对象

mysql - MySQL 中函数组合的歧义

mysql - SQL 按属性分组并在该组中有多个时显示结果

mysql - 将所有行设置为其默认值 MySQL?

php - 类内的Mysqli错误

php - 批准和拒绝 MySQL 和 PHP 不起作用

mysql - SELECT COUNT 内的 SELECT COUNT

MYSQL主从同步时间

php - 如何在其他存储过程 mysql 中重用相同的查询代码(不是结果)?

php - 插入到 MySQL 表中,重复覆盖