首页 > 试题广场 >

有一个数据库,包括雇员表(employee), 客户表(cu

[问答题]

有一个数据库,包括雇员表(employee), 客户表(customer)、产品表和订单表(Order), 订单明细(orderline) 它们的数据如下:

雇员表:ID,名字(name), 雇佣日期(hire_date)

客户:ID, 名称(name),城市(city)

产品表:ID,产品编码(code),价格(price),名称(name)

订单:ID, 客户ID(c_id), 签单雇员ID(e_id), 签单日期

订单明细:ID, 订单ID(o_id), 产品id(p_id), 订单数量(quantity)

问题1: 写一个程序,统计产品的畅销情况,显示产品的编码、名称,销售数量

问题2:统计最具价值员工,最具价值员工是销售订单总额最大的员工,显示员工名字和销售金额


Q2. 习惯用JOIN来避免Cartesian Product(不知道数据库自动优化query时,会不会提早对表进行σ筛选来避免完整Cartesian Product)。跟引入多张表后用WHERE子句是一样的。
SELECT e.name, SUM(p.price * d.quantity) amount
FROM employees e
RIGHT OUTER JOIN orders o ON e.id = o.e_id
RIGHT OUTER JOIN details d ON o.id = d.o_id
RIGHT OUTER JOIN products p ON d.p_id = p.id
GROUP BY e.name
ORDER BY amount DESC
LIMIT 1;



发表于 2023-03-28 08:17:55 回复(0)