SQL-使用两个不同的表查找平均值

时间:2019-12-05 23:03:45

标签: sql

我必须找到所有制造打印机的制造商(来自pc_table)的PC的平均内存大小(来自product_table)。

pc_table具有以下列:modelspeedram

product_table具有以下列:modelmanufacturertypeOfProduct(计算机/打印机)

我已经编写了这段代码:

SELECT a.manufacturer, AVG(b.ram) AS avg_ram_size
FROM pc_table b, (SELECT manufacturer, model
                  FROM product_table
                  WHERE type='PRINTER') a
WHERE b.model = a.model
GROUP BY a.manufacturer;

但是由于某种原因,输出表只是空的。

注意:每个同时生产打印机和PC的制造商,但我的输出仍然是空表(这是错误的)。

我刚开始使用SQL,感谢您的帮助。 (如果缺少任何信息,请发表评论,然后我将其添加)

1 个答案:

答案 0 :(得分:2)

听起来pc_table仅包含有关PC制造商的信息,但您想要有关同时制造打印机的PC制造商的信息。如果是这样,我建议使用类似的方法

SELECT p.manufacturer, AVG(pc.ram) AS avg_ram_size
FROM product_table p INNER JOIN pc_table pc 
 ON pc.model = p.model
WHERE p.manufacturer IN
 (
  SELECT p2.manufacturer
  FROM product_table p2
  WHERE p2.type='PRINTER'
 )
GROUP BY p.manufacturer

另外,您当前的连接语法非常古老,当前的ANSI语法将使用INNER JOIN