0

私はSQLの問題を抱えています。私は2つのテーブルを手に入れました:

album (asin(pk), title, artist, price, release, label, rank)
track (album(pk), dsk, posn, song) 

1 曲あたりの価格が $0.5 未満の安価なアルバムを探す必要があります。divion でフィルタリングするにはどうすればよいですか? これまでの私の試み:

SELECT a.title,a.price,COUNT(b.song) 
FROM album a 
JOIN track b 
ON (asin=album) 
GROUP BY album 
HAVING COUNT(a.price / b.song)

私はそれが間違っていることを知っています。私はSQLに非常に慣れていないので、混乱しています。あなたが私を助けてくれることを願っています。

どうもありがとうございました!

4

2 に答える 2

1
  SELECT a.title, a.price, COUNT(b.song) 
    FROM album a
    JOIN track b ON asin=album 
GROUP BY a.title, a.price
  HAVING 1.0 * a.price / COUNT(b.song) < 0.5

JOIN 条件asin=albumは怪しいように見えます。列のテーブル エイリアスを追加して修正します。

于 2013-04-23T12:30:08.837 に答える
1

すべてのトラックをアルバムを表す 1 行にグループ化する必要があるため、グループ化する必要がありますa.asin(これは一意のアルバム ID であり、タイトルは潜在的に同一である可能性があります)。COUNT(*)このレコードにグループ化された行数をカウントします (アルバム内の曲数と同じ)。HAVING曲の平均価格を計算し、0.5 よりも安いアルバムのみを残すように指示します。

SELECT a.title, a.price, COUNT(*)
FROM album a 
JOIN track b ON b.asin=b.album 
GROUP BY a.asin
HAVING a.price / COUNT(*) < 0.5
于 2013-04-23T12:29:05.433 に答える