0

我有一个 sql 问题。我有两张桌子:

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

我需要找到每首歌曲价格低于 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

您需要分组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 回答
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 回答