mysql - 编写此代码的另一种方法是什么?SQL中的任何快捷方式?
问题描述
我使用 SQL 的第一周,在课堂上,我们将完成一些任务。您能否建议如何通过将这段代码编写得更短一点(如果可能)来消除时间。
任务:每位员工的最佳客户
创建一个查询,检索每位员工花费超过 5,000 美元的每位客户的总销售额(提示:使用数据库中已有的 Order Subtotals 查询)。结果应按员工姓氏升序排序,然后按每个员工的总降序排序。
SELECT Employees.EmployeeID, LastName, FirstName, CompanyName,
cast(Sum((unitprice-(unitprice*discount))*quantity)as decimal (18,2)) AS SumOfSubtotal
FROM Orders
JOIN Customers ON Orders.CustomerID = Customers.CustomerID
JOIN [Order Details] ON [Order Details].OrderID = [Orders].OrderID
JOIN Employees ON Orders.EmployeeID=Employees.EmployeeID
GROUP BY Customers.CompanyName, Employees.EmployeeID, Employees.LastName, Employees.FirstName
HAVING SUM((UnitPrice-(UnitPrice*discount))*Quantity) > 5000
ORDER BY Employees.LastName, SUM((UnitPrice-(UnitPrice*discount))*Quantity) DESC
解决方案
做客户 c 订单 o 员工 e 订单详情 od 之类的盟友。
SELECT E.EmployeeID, LastName, FirstName, CompanyName,
cast(Sum((unitprice-(unitprice*discount))*quantity)as decimal (18,2)) AS SumOfSubtotal
FROM Orders O
JOIN Customers C ON O.CustomerID = C.CustomerID
JOIN [Order Details] OD ON OD.OrderID = O.OrderID
JOIN Employees E ON O.EmployeeID=E.EmployeeID
GROUP BY C.CompanyName, E.EmployeeID, E.LastName, E.FirstName
HAVING SUM((UnitPrice-(UnitPrice*discount))*Quantity) > 5000
ORDER BY E.LastName, SUM((UnitPrice-(UnitPrice*discount))*Quantity) DESC
推荐阅读
- jquery - 使用控制台开发工具在 Chrome 中自动加载 URL
- php - PHP Laravel 代码返回错误 500,日志中没有警告或错误
- javascript - 在 TypeScript\JavaScript 中将数组分解为函数参数
- android - 为什么 Android Studio 无法识别 Android Q Beta 2 符号?
- c# - 属性路由 ASP.NET Core
- java - 是否可以创建多个对象的列表,其中对象带有多个参数?
- python - Python - 一键返回上一页和 .destroy() 页面
- css - 在填充区域内剪辑伪元素
- excel - 设置(Private WithEvents As Sheet1) sheetUI = Sheet1 导致错误 438:对象不支持此属性或方法
- google-app-maker - 使用弹出窗口选择正确的关系字段并将值传递回输入表单