Sql 滥用聚合:COUNT()
我有两张桌子,罗兹莫瓦和阿本特。我正在尝试这样做:Sql 滥用聚合:COUNT(),sql,database,rstudio,Sql,Database,Rstudio,我有两张桌子,罗兹莫瓦和阿本特。我正在尝试这样做: 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") 但我犯了个错误 滥用聚合:
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()
有人能给我解释一下原因吗?也许你把
在哪里
和拥有
搞混了:
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 ile>4
请注意,左连接是不必要的,因为您需要至少5行匹配。(我想对您的查询可能有其他解释,但我猜正在计数的多行来自R
)
然后对计数(*)
进行简化。用于COUNT()
的列是
上的的一部分。您的COUNT()
版本适用于左联接
,但对您所做的工作不必要。也许您将何处
与具有
相混淆:
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 ile>4
请注意,左连接是不必要的,因为您需要至少5行匹配。(我想对您的查询可能有其他解释,但我猜正在计数的多行来自R
)
然后对计数(*)
进行简化。用于COUNT()
的列是
上的的一部分。您的COUNT()
版本适用于左加入
,但对您所做的工作不必要。嘿,谢谢您的帮助!这管用!但是你能告诉我为什么我要用这里和哪里?为什么会有计数(*)?这不是意味着“数一数”吗?(我是这里的新手)嘿,谢谢你的帮助!这管用!但是你能告诉我为什么我要用这里和哪里?为什么会有计数(*)?这不是意味着“数一数”吗?(我是这里的新手)我猜这是因为R.id_abonent_to来自左联接表,所以它的值不一定是“真的”。我猜这是因为R.id_abonent_to来自左联接表,所以它的值不一定是“真的”。