4

ただの練習問題ですが、少し混乱します。誰かがこれを片付けることができれば幸いです。

ProductというDBとPCという別のDBがあります。「プリンタも製造しているすべてのメーカーのPCの平均ハードディスクサイズを見つける」というクエリを実行しようとしています。

これが私のコードです:

SELECT maker, AVG(hd) 
FROM pc, product
WHERE pc.model=product.model
GROUP BY maker
HAVING COUNT(type='PR')>=1

typeは、printer(PR)ラップトップまたはPCを表すProductの属性ですが、HAVINGステートメントは、プリンターを製造するメーカーだけを特定しているようには見えません。代わりに、Productテーブルの各メーカーのAVGを取得します。

アップデート

関係は次のようになります。

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

5 に答える 5

4

次のクエリを試してください。

SELECT maker, AVG(hd) FROM PC, Product
WHERE PC.model=Product.model
AND Product.maker IN 
   (SELECT DISTINCT maker FROM Product WHERE type='PR')
GROUP BY Product.maker;

デモ:http ://sqlfiddle.com/#!2/abfaa/2

条件を追加するだけで、メーカーが少なくとも1つのプリンター製品を所有しているメーカーの1つであることを確認できます。次に、メーカーごとにグループ化して、個々の平均を見つけます。

于 2012-11-04T05:19:45.137 に答える
1

プリンターを製造するすべてのメーカー:

  SELECT maker
    FROM product
   WHERE type = 'PR'
GROUP BY maker;

プリンタも製造しているすべてのメーカーのPCの平均ハードディスクサイズ

  SELECT p.maker, AVG(pc.hd) avg_hd_size
    FROM
       (
  SELECT maker
    FROM product
   WHERE type = 'PR'
GROUP BY maker
       ) g
    JOIN product p on p.maker = g.maker
    JOIN pc on pc.model = p.model
GROUP BY p.maker;
于 2012-11-04T05:08:27.103 に答える
0

SELECTメーカー、avg(hd)

PCINNERJOIN製品から_

PC.model =Product.modelで

GROUPBYメーカー

HAVING maker IN(SELECT DISTINCT maker FROM Product WHERE type ='Printer')

于 2016-09-29T12:52:18.510 に答える
0

SELECT maker、AVG(hd)AS "average HDD capacity" FROM Product Inner Join PC ON PC.model = Product.model Where maker IN(select maker from product Where type ='PC' Intersect select maker from product Where type ='Printer ')メーカー別グループ

于 2022-02-20T17:57:21.410 に答える
-1
select distinct maker
      ,avg(hd) as Avg_hd
  from Product
 inner join PC on (Product.model = PC.model)
 where type = 'Pc'
   and maker in (Select maker from Product where type = 'Printer')
 Group by maker
于 2019-07-21T18:16:57.577 に答える