滥用汇总:COUNT()

时间:2019-01-11 16:14:24

标签: sql database rstudio

我有2张桌子rozmowa和abonent。我正在尝试这样做:

dbGetQuery(con, "SELECT A.imie, A.nazwisko, A.numer, 
COUNT(R.id_abonent_to) AS ile 
FROM abonent A LEFT JOIN 
rozmowa R ON A.id = R.id_abonent_to 
WHERE ile > 4
GROUP BY A.id, A.imie, A.nazwisko, A.numer")

但出现错误

  

滥用汇总:COUNT()

有人可以向我解释为什么吗?

1 个答案:

答案 0 :(得分:2)

也许您将WHEREHAVING混淆了:

SELECT A.imie, A.nazwisko, A.numer, COUNT(*) AS ile
FROM abonent A JOIN
     rozmowa R
     ON A.id = R.id_abonent_to
GROUP BY A.id, A.imie, A.nazwisko, A.numer
HAVING COUNT(*) > 4;

并非所有数据库都支持HAVING中的列别名。如果是这样,则可以使用HAVING ile > 4

请注意,LEFT JOIN是不必要的,因为您需要至少5行匹配。 (我想您的查询可能有其他解释,但我想要计算的多行来自R。)

然后COUNT(*)被简化。 COUNT()所使用的列是ON的一部分。您的COUNT()版本适用于LEFT JOIN,但对于您正在执行的操作来说则不必要。