gpt4 book ai didi

mysql - 对于每个 X,找到该 X 的平均 Y。 4 个查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:31 25 4
gpt4 key购买 nike

关系:

Product( maker, model, type )
PC( model, speed, ram, hd, price)
Laptop( model, speed, ram, hd, screen, price)
Printer( model, color, type, price)

我目前正在尝试自学 MySQL 以供工作之用。我买了一本书,正在研究一些示例问题。我已经停止尝试弄清楚如何构建这些查询。

  1. 找出每种不同速度的 PC 平均价格
  2. 找出每个制造商的笔记本电脑的平均屏幕尺寸
  3. 找到生产至少三种不同型号电脑的制造商
  4. 为每个销售个人电脑的制造商找出个人电脑的最高价格
  5. 找出每台速度超过 2.0 的电脑的平均价格

我可以轻松地计算一列的平均值“SELECT AVG(price) FROM pc”,但我不确定如何为每个 x 找到它的 y 平均值。问题 1、2、4、5 的结构如下,问题 3 我认为其中会有一个子查询,我认为它会找到与其中每台电脑的型号、制造商的关系。但我不确定如何做第二部分“制造商至少制造三种不同的型号”

(SELECT model, maker FROM product NATURAL JOIN pc WHERE type = 'pc')

有什么帮助吗?提前致谢!

最佳答案

1/X 是通过使用 GROUP BY 完成的:

`SELECT speed, AVG(price) FROM PC GROUP BY speed`

2/非常相似.. 在阅读 GROUP BY Mysql Documentation 之后你能找到它吗? ?

SELECT maker, AVG(speed) 
FROM product p
JOIN laptop l
ON p.type="Laptop" AND p.model = l.model
GROUP BY maker

逻辑:同样是 1,但这里我们需要制造商。所以我们需要从产品中添加列。我们将笔记本电脑加入产品,然后按制造商分组。

3/也是分组依据,您将要使用 HAVING。尝试一下,如果您需要更多帮助或解决方案,请在评论中询问。

SELECT maker, COUNT(*)  
FROM Product p
JOIN PC
ON p.type="OC" AND p.model = pc.model
GROUP BY maker
HAVING COUNT(*) > 3

同2:加入产品与PC,现在按制造商分组,现在只保留计数大于三的行。您确实也可以使用子查询来做到这一点:

`SELECT maker 
from product p
where (
select COUNT(*)
from PC
where p.type="PC" and p.model = PC.model)
> 3`

4/将是一个group by,并与product 一起join 得到maker

想再试一次吗?您提出的第一个解决方案是:

SELECT maker, MAX(DISTINCT price) AS MaxPrice 
FROM (
SELECT model, maker, price
FROM product
NATURAL JOIN pc
WHERE type = 'pc') AS t5
GROUP BY maker
  • 您不需要 MAX 中的 DISTINCT,最大值始终是最大值,即使两行具有相同的最高值。 GROUP BY 是一种也是与众不同的。
  • 你在这里的子查询并不是真的需要,如果你决定子查询,想想你需要哪些列(你需要模型吗?为什么?)。
  • 是否想尝试与 3 中相同的逻辑,使用连接?

5/类似于 1,但带有一个 WHERE 子句。没什么大不了的。

关于mysql - 对于每个 X,找到该 X 的平均 Y。 4 个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10128935/

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