0

関係:

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. 少なくとも 3 つの異なるモデルの PC を製造しているメーカーを見つける
  4. PC を販売するメーカーごとに、PC の最高価格を見つけます
  5. 2.0 を超える速度の PC ごとに、平均価格を求めます

列の平均を簡単に「 SELECT AVG(price) FROM pc 」することができますが、x ごとに y の平均を見つける方法がわかりません。問題 1、2、4、5 はこのように構成されています。問題 3 はその中にサブクエリがあり、各 PC のモデル、メーカーとの関係を見つけることができると思います。しかし、2番目の部分「メーカーは少なくとも3つの異なるモデルを作成する」を行う方法がわかりません

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

何か助けはありますか?前もって感謝します!

4

2 に答える 2

0

(2) 平均画面サイズの場合:

SELECT maker AS Maker, AVG(screen) AS Avg_Screen_Size FROM Product JOIN Laptop ON Product.model=Laptop.model AND Product.type='Laptop' GROUP BY maker

右。

クエリの結果:

メーカー Avg_Screen_Size

A13

B14

C12

================================================== =====

(3) 3 つの異なるモデルの PC の場合:

SELECT Product.maker, COUNT(Product.model) FROM Product WHERE Product.type='PC' GROUP BY maker HAVING COUNT(Product.model) >=3

右。

クエリの結果:

メーカー

E3

================================================== =======

(4) 最大料金の場合:

SELECT DISTINCT maker, MAX(PC.price) AS Max_Price from Product, PC WHERE Product.type='PC' AND PC.price=(SELECT DISTINCT MAX(price) FROM PC WHERE PC.model=Product.model) GROUP BY maker

右。

クエリの結果:

メーカーMax_Price

980.0000

B 850.0000

E 350.0000

================================================== ===============

(5) 速度 20 を超える平均価格の場合:

SELECT DISTINCT speed, AVG(PC.price) AS AVG_Price FROM PC INNER JOIN Product ON PC.model=Product.model WHERE PC.speed>20 GROUP BY PC.speed

右。

クエリの結果:

速度 AVG_Price

750 900.0000

800 970.0000

900 980.0000

于 2014-02-19T09:30:12.387 に答える