Sql 如何正确计算用户数

Sql 如何正确计算用户数,sql,oracle,Sql,Oracle,我试图通过AppName和CategoryName显示每个应用程序的AppUsers数量,用户总数按降序排列,因此最受欢迎的用户位于顶部 我在下面尝试的代码无法计算每个应用程序的用户数,我也不确定如何将它们与其他表连接起来 SELECT DISTINCT COUNT (au."AppUserId") "No. Of Users", CAST(a."AppName" AS varchar2(30)) AS "AppName", --Cast to reduce column size in SQL

我试图通过
AppName
CategoryName
显示每个应用程序的
AppUsers
数量,用户总数按降序排列,因此最受欢迎的用户位于顶部

我在下面尝试的代码无法计算每个应用程序的用户数,我也不确定如何将它们与其他表连接起来

SELECT DISTINCT
COUNT (au."AppUserId") "No. Of Users",
CAST(a."AppName" AS varchar2(30)) AS "AppName", --Cast to reduce column size in SQL Plus
ac."CategoryName"
FROM BR_APP a, BR_APPCATEGORY ac, BR_APPUSER au;
我发现很难计算出如何计算用户数量并显示每个应用程序的用户数量。

切勿在
FROM
子句中使用逗号。始终使用正确、明确、标准的连接语法

如果你没有在课堂/书本上学习到这一点,那么你应该把它提出来。你不想在20多年前被取代的计算机上学习一些东西

然后,如果您想计算一些东西,则查询中应包含
分组依据

SELECT a.appname, ac.categoryname, COUNT(*) as num_users
FROM BR_APP a JOIN
     BR_APPCATEGORY ac
     ON a.appcategoryid = ac.appcategoryid JOIN
     BR_APPUSER au
     ON a.appuserid = au.appuserid
GROUP BY a.appname, ac.categoryname;

出于某种原因,我在第9行得到了一个
错误:ORA-00904:“a”。“AppUserId”:无效标识符
,我在您列出的所有表格中添加了双引号,但它仍然保持不变。您在a.appuserid=au.appuserid中包含了
,但是
userid
在BR_APP table中不存在。我已将
appuserid
替换为
appid
,并且它可以正常工作,再次感谢您,我一定会把与sql的斗争传递给我的同事professor@UnboundPhantom在您的示例中,您提到了
au.AppUserId“
,这与
au.AppUserId
不同。