我有一个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很新,而且令人困惑。我希望你能帮助我。
非常感谢!
答案 0 :(得分: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
答案 1 :(得分: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
看起来很可疑。通过为列添加表别名来修复它。