gpt4 book ai didi

sql - 为多种产品选择最低价格

转载 作者:行者123 更新时间:2023-12-03 03:03:04 24 4
gpt4 key购买 nike

大家好,

对于一个项目,我需要对所有产品进行概述,以找到价格最低的供应商。因此,对于每种产品,必须有 1 个带有价格和供应商的结果

如果尝试了一百个查询,但我就是找不到合适的查询。

表格:

CREATE TABLE [dbo].[product](
[id] [int] IDENTITY(1,1) NOT NULL,
[picture_name] [varchar](255) NOT NULL)


CREATE TABLE [dbo].[supplier](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NOT NULL)

CREATE TABLE [dbo].[supplier_overview_product](
[supplier] [int] NOT NULL,
[product] [int] NOT NULL,
[price] [real] NOT NULL)

产品与产品是 FK 的供应商对供应商是 FK

这就是我所拥有的:

SELECT s.name, MIN(sop.price)
FROM dbo.supplier_overview_product AS sop
JOIN dbo.product AS p
ON sop.product = p.id
JOIN dbo.supplier AS s
ON s.id = sop.supplier
GROUP BY s.name

但是没有供应商。我想知道那是谁。

提前致谢

最佳答案

我理解您的问题是指您希望供应商的每种产品价格最低。

CTE按每种产品的价格对供应商进行排序,主查询使用该排序仅检索价格最低的供应商。

注意:因为我使用的是RANK,如果多个供应商碰巧有相同的最低价格,它们都会被退回。如果不正确,请将 RANK 更改为 ROW_NUMBER

;WITH SuppliersByPrice AS (
SELECT product, supplier, price,
RANK() OVER (PARTITION BY product ORDER BY price) as ord
FROM supplier_overview_product
)
SELECT SBP.product, SBP.price, S.name
FROM SuppliersByPrice SBP
INNER JOIN Supplier S ON S.id = SBP.supplier
WHERE SBP.ord = 1

关于sql - 为多种产品选择最低价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14605834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com