【发布时间】:2023-04-01 07:29:02
【问题描述】:
我有以下表格:- - 雇员 - 订单 - 订单详情
Employees
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| EmployeeID | int | NO | PRI | NULL | |
| LastName | varchar(20) | YES | | NULL | |
| FirstName | varchar(10) | YES | | NULL | |
| Title | varchar(30) | YES | | NULL | |
| TitleOfCourtesy | varchar(25) | YES | | NULL | |
| BirthDate | datetime | YES | | NULL | |
| HireDate | datetime | YES | | NULL | |
| Address | varchar(60) | YES | | NULL | |
| City | varchar(15) | YES | | NULL | |
| Region | varchar(15) | YES | | NULL | |
| PostalCode | varchar(10) | YES | | NULL | |
| Country | varchar(15) | YES | | NULL | |
| HomePhone | varchar(24) | YES | | NULL | |
| Extension | varchar(4) | YES | | NULL | |
| Notes | mediumtext | YES | | NULL | |
| ReportsTo | int | YES | | NULL | |
| PhotoPath | varchar(255) | YES | | NULL | |
| Salary | float | YES | | NULL | |
+-----------------+--------------+------+-----+---------+-------+
Orders
+----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| OrderID | int | NO | PRI | NULL | |
| CustomerID | varchar(5) | YES | | NULL | |
| EmployeeID | int | YES | | NULL | |
| OrderDate | datetime | YES | | NULL | |
| RequiredDate | datetime | YES | | NULL | |
| ShippedDate | datetime | YES | | NULL | |
| ShipVia | int | YES | | NULL | |
| Freight | decimal(10,4) | YES | | NULL | |
| ShipName | varchar(40) | YES | | NULL | |
| ShipAddress | varchar(60) | YES | | NULL | |
| ShipCity | varchar(15) | YES | | NULL | |
| ShipRegion | varchar(15) | YES | | NULL | |
| ShipPostalCode | varchar(10) | YES | | NULL | |
| ShipCountry | varchar(15) | YES | | NULL | |
+----------------+---------------+------+-----+---------+-------+
OrdreDetails
+-----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| OrderID | int | YES | MUL | NULL | |
| ProductID | int | YES | MUL | NULL | |
| UnitPrice | decimal(10,4) | YES | | NULL | |
| Quantity | smallint | YES | | NULL | |
| Discount | double | YES | | NULL | |
+-----------+---------------+------+-----+---------+-------+
我的问题是 给出员工的标识符、姓名和总销售额,按员工标识符排序,针对已售出 70 多种不同产品的员工
我写了这个查询
select t1.EmployeeID as Identifier,
concat(t1.FirstName, ' ', t1.LastName) as Name,
(select count(*) from orders t4 where t4.EmployeeID = identifier) as Total_Sales,
count(distinct(t3.ProductID)) as Total_unique_products
from Employees t1
inner join Orders t2
on t1.EmployeeID = t2.EmployeeID
inner join orderdetails t3
on t2.OrderID = t3.OrderID
group by t1.EmployeeID
order by t1.EmployeeID;
我还想只显示 Total_unique_products 大于 70 的那些; 我该怎么做?
【问题讨论】:
-
提示(因为懒得回答)
GROUP BY,HAVING,也许 Total_Sales 不需要是子查询。