重复计算曲目数量

时间:2018-11-19 05:01:29

标签: postgresql

如果“曲目”表中A的行少于“专辑”表中报告的A的曲目数,则专辑Z缺少曲目。对于每首没有丢失曲目的专辑,请找到其总运行秒数。

1 个答案:

答案 0 :(得分:1)

由于这是一个练习,所以我不想仅仅通过给您最终的解决方案而完全破坏学习效果。我会尽力指导您。

您的问题是WHERE子句

WHERE albums.tracks >= tracks.number

我想您打算实现“为每张专辑都保留曲目,...”的要求。

但是,条件并非如此;而是排除了数量超过专辑的曲目数量的曲目。

您需要类似以下内容:“与专辑相关的曲目数量等于(大于或等于)专辑曲目数量”。

换句话说:WHERE count(tracks.*) >= albums.tracks。 (“与专辑相关”部分由加入条件实现-不包括与专辑无关的曲目。)

看到了吗?秘诀通常只是将自然语言的句子翻译成SQL。

现在我们面临一个问题,因为我们无法在count子句中拥有像WHERE这样的聚合函数。这是因为WHERE是在形成这些组的 GROUP BY之前处理的。

对我们来说幸运的是,有一种“ WHERE子句”是在分组后进行处理的,即HAVING

其余的留给您:^)