按照供货商分类查询每个供货商供应的产品数量,平均价格及最高价格,仅返回平均价格大于30元的记录。group by having 写出正确的T-SQL查询语句。 请下载附件northwind数据库文件后,附加到本地数据上,完成此题。
时间: 2024-02-17 18:03:59 浏览: 58
好的,以下是查询语句:
```
USE Northwind;
SELECT Suppliers.CompanyName, COUNT(Products.ProductID) AS ProductCount, AVG(Products.UnitPrice) AS AvgPrice, MAX(Products.UnitPrice) AS MaxPrice
FROM Products
INNER JOIN Suppliers ON Products.SupplierID = Suppliers.SupplierID
GROUP BY Suppliers.CompanyName
HAVING AVG(Products.UnitPrice) > 30;
```
这个查询语句会根据供货商来分组,并且计算每个供货商供应的产品数量,平均价格和最高价格。然后,使用 HAVING 子句来筛选出平均价格大于30元的记录。
相关问题
查询供应零件P1的并且供应总量大于400的供应商号及供应总量。
好的,您可以通过以下 SQL 查询语句来实现您的需求:
```
SELECT s.sno, SUM(sp.qty) AS total_qty
FROM supplier s, supply sp
WHERE s.sno = sp.sno AND sp.pid = 'P1'
GROUP BY s.sno
HAVING SUM(sp.qty) > 400;
```
该语句会在供应商表(supplier)和供应表(supply)之间进行联接,筛选出供应零件 P1 的所有供应记录,并按供应商号(sno)进行分组。然后,使用聚合函数 SUM 计算每个供应商的供应总量,并将其命名为 total_qty。最后,使用 HAVING 子句过滤出供应总量大于400的供应商。
零件编号 供应商1 供应商2 供应商3 价格 重量 价格 重量 价格 重量 1 10 5 8 6 12 4 2 20 8 21 10 30 5 3 40 5 42 4 30 10 4 30 20 60 10 45 15
这是一个供应商选择问题,我们需要从三个供应商中选择一个供应商为每个零件提供零件,使得总价格最小,同时重量不超过20。
我们可以使用动态规划算法来解决这个问题。我们使用一个三维的数组 dp[i][j][k] 表示前 i 个零件,选择供应商1提供的零件的数量为 j,供应商2提供的零件的数量为 k,所需的最小价格。
对于每个零件,我们可以选择三个供应商之中的一个供应商提供该零件。因此,我们可以根据当前选择的供应商来转移状态。具体来说,我们有以下两种情况:
1. 如果选择供应商1提供当前的零件,则 dp[i][j][k] = dp[i-1][j-1][k] + 10(价格),如果当前零件的重量 w 大于 20-j-k,则当前方案不可行,不更新 dp[i][j][k]。
2. 如果选择供应商2提供当前的零件,则 dp[i][j][k] = dp[i-1][j][k-1] + 8(价格),如果当前零件的重量 w 大于 20-j-k,则当前方案不可行,不更新 dp[i][j][k]。
3. 如果选择供应商3提供当前的零件,则 dp[i][j][k] = dp[i-1][j][k] + 12(价格),如果当前零件的重量 w 大于 20-j-k,则当前方案不可行,不更新 dp[i][j][k]。
最终答案为 dp[4][j][k](j+k<=20)中的最小值。
根据上述算法,我们可以得到最小价格为 37,供应商选择方案为:
- 零件1:供应商1
- 零件2:供应商1
- 零件3:供应商3
- 零件4:供应商2