这是我的数据库示例: 带有ProID的 orderdetails 表与产品标签相关
| ProID | OrderID | OrderQuantity | OrderPrice |
| 93 | 17 | 1 | 150 |
| 16 | 18 | 1 | 100 |
| 93 | 19 | 3 | 450 |
| 93 | 17 | 1 | 150 |
产品表
| ProID | ProPicture | ProName | ProPrice |
| 93 | ./a.jpg | Iphone | 150 |
| 16 | ./b.jpg | Nokia | 100 |
如何获取最畅销的产品信息:基于 orderdetails 表的产品表中的ProID,ProPiecture,ProName,ProPrice?
答案 0 :(得分:3)
您可以在ProID上的表之间使用SQL连接,例如
from products as p
inner join orderdetails as od
on p.ProID = od.ProID
您可以使用 group by 语法来确保获得不同的行,例如
group by p.ProID
使用sum,count和avg等聚合函数来查找select中的总数,例如
select sum(od.OrderQuantity) as total
使用 order by 语法显示最佳答案,例如
order by sum(od.OrderQuantity) desc
使用 limit 显示前n个结果,例如
limit 5
希望这能为你提供足够的指针来自己制定SQL。
notes ,我给表提供了一个别名,以确保您不会在列名之间产生冲突。由于SQL计算数据集的方式,您无法在订单声明中引用 total 。我使用了内连接,但你可能想看看左边和右边的连接。正确加入。
答案 1 :(得分:0)
您可以尝试以下查询 -
select * from products where ProID =
(select ProID
from
(select ProID , sum(OrderQuantity) as total_order,
max(sum(OrderQuantity)) over() as maxSm from orderdetails
group by ProID
)
where total_order = maxSm)
答案 2 :(得分:-1)
经过测试的ms sql查询,可以从上表中找到更快的销售产品
SELECT TOP(2) PRO.PRONAME, SUM(OD.ORDERQUANTITY) SALEQTY
FROM PRODUCTS AS PRO INNER JOIN DBO.ORDERDETAILS AS OD
ON PRO.PROID = OD.PROID GROUP BY PRO.PRONAME