在SQL Server的基本题库中,我们可以通过一系列练习题来熟悉和提升SQL查询技能。以下将对这些题目进行详细解析: **练习题一**: 这个练习要求我们从Northwind数据库中找出职称为'SALES'(不区分大小写)的员工详细信息。查询语句使用了`UPPER()`函数将标题转换为大写,然后使用`LIKE`操作符匹配包含'SALES'的记录。查询结果包括员工编号、姓名、职称和生日。 ```sql SELECT EMPLOYEEID AS 員工編號, FIRSTNAME || ' ' || LASTNAME AS 姓名, TITLE AS 職稱, BIRTHDATE AS 生日 FROM EMPLOYEES WHERE UPPER(TITLE) LIKE '%SALES%'; ``` **练习题二**: 此题要求找出产品编号以5开头或第二个字符为5的产品详细信息。这里使用了`LIKE`操作符两次,分别匹配以'5'开头和以 '_5' 开头的字符串。 ```sql SELECT PRODUCTID AS 品號, PRODUCTNAME AS 品名, UNITPRICE AS 單價, UNITSINSTOCK AS 庫存量 FROM PRODUCTS WHERE PRODUCTID LIKE '5%' OR PRODUCTID LIKE '_5%'; ``` **练习题三**: 这道题要查询所有员工以及与他们住在同一城市的客户信息。使用了`LEFT OUTER JOIN`确保即使某些员工没有对应的客户,他们的信息也会被显示出来。结果按员工编号和城市排序。 ```sql SELECT A.EMPLOYEEID AS 員工編號, A.FIRSTNAME || ' ' || A.LASTNAME AS 姓名, A.CITY AS 居住城市, B.CUSTOMERID AS 相同所在城市之客戶編號, B.COMPANYNAME AS 客戶之公司名稱 FROM EMPLOYEES A LEFT OUTER JOIN CUSTOMERS B ON A.CITY = B.CITY ORDER BY 1, 4; ``` **练习题四**: 该题要求按产品编号、年度和月份对销售总量进行统计。使用了`INNER JOIN`连接`ORDERS`和`ORDER_DETAILS`表,然后通过`GROUP BY`对年、月和产品编号分组,并使用`SUM`函数计算销售总量。最后按产品编号、年度和月份降序排序。 ```sql SELECT PRODUCTID AS 產品編號, TO_CHAR(ORDERDATE, 'YYYY') AS 年度, TO_CHAR(ORDERDATE, 'MM') AS 月份, SUM(QUANTITY) AS 銷售總量 FROM ORDERS A INNER JOIN ORDER_DETAILS B ON A.ORDERID = B.ORDERID GROUP BY PRODUCTID, TO_CHAR(ORDERDATE, 'YYYY'), TO_CHAR(ORDERDATE, 'MM') ORDER BY 1 DESC, 2 DESC, 3 DESC; ``` **练习题五**: 此题需找出每个主管及其下属数量。通过子查询计算每个主管的下属数量,然后使用`INNER JOIN`与`EMPLOYEES`表连接,以获取主管的姓名。 ```sql SELECT A.主管員工編號, B.FIRSTNAME || ' ' || B.LASTNAME AS 主管姓名, A.下屬數目 FROM ( SELECT REPORTSTO AS 主管員工編號, COUNT(EMPLOYEEID) AS 下屬數目 FROM EMPLOYEES WHERE REPORTSTO IS NOT NULL GROUP BY REPORTSTO ) A INNER JOIN EMPLOYEES B ON A.主管員工編號 = B.EMPLOYEEID; ``` **练习题七**: 此题要求展示每个员工的总业绩,即使某些员工没有业绩,也会显示0。使用子查询计算每个员工的总业绩,然后使用`LEFT OUTER JOIN`确保所有员工都包含在结果中。结果按总业绩降序排序。 ```sql SELECT A.員工編號, B.FIRSTNAME || ' ' || B.LASTNAME AS 姓名, A.總業績 FROM ( SELECT EMPLOYEEID AS 員工編號, NVL(SUM(QUANTITY * UNITPRICE), 0) AS 總業績 FROM ORDERS LEFT OUTER JOIN ORDER_DETAILS ON ORDERS.ORDERID = ORDER_DETAILS.ORDERID GROUP BY EMPLOYEEID ORDER BY 2 DESC ) A LEFT OUTER JOIN EMPLOYEES B ON A.員工編號 = B.EMPLOYEEID; ``` 这些练习涵盖了SQL的基础知识,如选择、连接、分组和聚合函数的使用,对于初学者来说是很好的实践材料。通过解决这些问题,可以加深对SQL语言的理解,提高数据查询和分析的能力。
剩余24页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助