【问题标题】:How do I create a view with multiple aggregated functions?如何创建具有多个聚合函数的视图?
【发布时间】:2019-02-08 16:51:54
【问题描述】:

如何创建一个新的视图名称为 FULLVIEW。并得到以下列:MIN(LASTNAME) name as NAME, DISTINCT (MANAGER_ID) rename as "Available Manager_id", COUNT (MANAGER_ID) rename as "No. Manager_id”,以及每个 job_id 的 SUM(SALARY)。并应用完全外部联接 尽一切可能创建 FULLVIEW 视图,而不交换列。

我似乎无法弄清楚如何做到这一点,因为我对 SQL 有点陌生。我的老板为了一个项目给了我这个练习。这实际上是练习的最后一个,也是我唯一想不通的一个。

我有两张桌子可用:

  • 部门
  • 员工

我一直在尝试这样做,但无法真正弄清楚。

    SQL> CREATE VIEW FULLVIEW AS
  2  SELECT LASTNAME, EMPLOYEES.MANAGER_ID, DEPARTMENTS.MANAGER_ID, SALARY
  3  FROM EMPLOYEES
  4  FULL OUTER JOIN
  5  (
  6  SELECT LASTNAME, MIN('LASTNAME') AS NAME
  7  FROM EMPLOYEES)
  8  (
  9  SELECT DISTINCT MANAGER_ID 'AVAILABLE MANAGER_ID'
 10  FROM EMPLOYEEES)
 11  (
 12  SELECT COUNT MANAGER_ID 'NO. OF MANAGER_ID'
 13  FROM EMPLOYEEES)
 14  (
 15  SELECT SUM SALARY FOR EACH ROW
 16  FROM EMPLOYEES);

【问题讨论】:

  • 你应该学习一些关于 SQL 的基本教程并练习这些主题:1)如何连接两个表,2)如何使用 GROUP BY 进行聚合 - 在你申请 SQL 专家的工作之前; )
  • 请为您的结果显示示例列和行。到目前为止,我不知道你在尝试什么。您想要所有不同的经理 ID?表中字母表中第一个姓氏?这如何进入一个结果表?那么SUMCOUNT 是函数,不仅仅是关键字,需要括号。然后 MIN('LASTNAME') 是 'LASTNAME' - 无论你多久使用一次字符串 'LASTNAME',最小值(和最大值)仍然是 'LASTNAME'。然后,您可以在没有 USINGON 子句的情况下加入。即使没有JOIN 子句。实际上,到目前为止,您似乎从未编写过任何查询。
  • 无论如何,这只是一个练习。如果你不能解决它,你知道你的立场和练习什么。
  • @MarmiteBomber 其实我没有申请这份工作,是我老板让我来的。
  • 如前所述,我不明白您要达到的目标。我不明白你的解释。而且似乎其他人也有同样的问题,因为 SQL 问题通常会在几分钟内得到几个答案。您应该做的是显示示例数据:一些员工行,一些部门行,然后是预期结果的行。

标签: sql oracle oracle12c sql-view


【解决方案1】:

您需要为列别名和“as”关键字使用双引号。例如:

SELECT DISTINCT MANAGER_ID AS "AVAILABLE MANAGER_ID"

【讨论】:

    【解决方案2】:
    CREATE VIEW FULLVIEW
      AS ( 
        SELECT MIN(LASTNAME) AS NAME,
               DISTINCT(E.MANAGER_ID) AS "Available Manager_id", 
               COUNT(E.MANAGER_ID) AS "No.of Manager_id",
               JOB_ID, 
               sum(salary)
          FROM EMPLOYEES E 
            FULL OUTER JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
          GROUP BY JOB_ID);
    

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      相关资源
      最近更新 更多