这是我从班级的家庭作业中提出的一个问题,这个问题给了我一些麻烦。
显示在Syndey的任何部门加入超过5名员工的月份。
PS:我为帽子道歉。我的老师指示我创建这样的表格。表位:
LOCATION_ID NOT NULL NUMBER(4)
STREET_ADDRESS VARCHAR2(40)
POSTAL_CODE VARCHAR2(12)
CITY NOT NULL VARCHAR2(30)
STATE_PROVINCE VARCHAR2(25)
COUNTRY_ID CHAR(2)
表格工作:
JOB_ID NOT NULL VARCHAR2(10)
JOB_TITLE NOT NULL VARCHAR2(35)
MIN_SALARY NUMBER(6)
MAX_SALARY NUMBER(6)
JOB_HISTORY:
JOB_ID NOT NULL VARCHAR2(10)
JOB_TITLE NOT NULL VARCHAR2(35)
MIN_SALARY NUMBER(6)
MAX_SALARY NUMBER(6)
表员工:
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
表部门:
DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)
答案 0 :(得分:0)
首先,请不要抱歉在SQL脚本中使用大写字母。您的老师正在教您正确的指导方针。实际上,这是一种推荐的方式(清洁代码方式),用大写字母编写SQL脚本,尤其是SQL关键字和数据类型,以提高可读性。如果您希望将列名称保留为大写,那么这是您的选择。
这是您的查询以获得所需的输出。您尚未提及当前定位的数据库。我编写了针对Microsoft SQL Server数据库的查询。
SELECT HiredMonth,COUNT(HiredMonth)
FROM
(
SELECT DATENAME(MONTH,E.HIRE_DATE) AS HiredMonth
FROM Employees E
INNER JOIN Departments D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
INNER JOIN Locations L ON D.LOCATION_ID = L.LOCATION_ID
WHERE CITY = 'Sydney') AS P
Group BY P.HiredMonth
P.S。如果你的目标是其他数据库,那么我的查询中使用的几个内置函数(如DATENAME)可能需要相应更改才能使此查询在其他数据库中可编辑。