Sql 显示每个部门的编号和名称以及每个部门雇用的员工人数
这是我尝试过的,但无法让它工作Sql 显示每个部门的编号和名称以及每个部门雇用的员工人数,sql,Sql,这是我尝试过的,但无法让它工作 SELECT d.deptno,d.dname COUNT('e.empno') "number of employees" FROM dept,emp WHERE d.deptno = e.deptno GROUP BY d.deptno,d.dname 非常感谢您的帮助,谢谢好的,您有一些语法错误: COUNTSomething是要选择的对象,因此应该在d.dname之后用逗号分隔。此外,正如纪尧姆指出的,它是一个列而不是一个字符串,因此不需要引号: 选择d
SELECT d.deptno,d.dname
COUNT('e.empno') "number of employees"
FROM dept,emp
WHERE d.deptno = e.deptno
GROUP BY d.deptno,d.dname
非常感谢您的帮助,谢谢好的,您有一些语法错误: COUNTSomething是要选择的对象,因此应该在d.dname之后用逗号分隔。此外,正如纪尧姆指出的,它是一个列而不是一个字符串,因此不需要引号: 选择d.deptno、d.dname、COUNTe.empno 您使用了像d和e这样的别名,但没有定义它们。您可以这样做: 来自d部门 连接应按如下方式编写: e.deptno=d.deptno上的内部连接e 从技术上讲,这不是语法错误,但我建议显式使用内部连接 注释的前缀应为“-”
这里假设T-SQL/MS SQL Server 好的,您有一些语法错误: COUNTSomething是要选择的对象,因此应该在d.dname之后用逗号分隔。此外,正如纪尧姆指出的,它是一个列而不是一个字符串,因此不需要引号: 选择d.deptno、d.dname、COUNTe.empno 您使用了像d和e这样的别名,但没有定义它们。您可以这样做: 来自d部门 连接应按如下方式编写: e.deptno=d.deptno上的内部连接e 从技术上讲,这不是语法错误,但我建议显式使用内部连接 注释的前缀应为“-”
这里假设T-SQL/MS SQL Server 在我看来,您可能正在使用Oracle,在这种情况下,修复相当简单:
SELECT d.deptno, d.dname, count(e.empno) "number of employees"
FROM dept d, emp e
WHERE d.deptno = e.deptno
GROUP BY d.deptno, d.dname
您需要明确地告诉DB别名指的是什么。错误消息可能提到一个无效/丢失的标识符“d”,这意味着它不知道该标识符是什么。在我看来,您可能正在使用Oracle,在这种情况下,修复相当简单:
SELECT d.deptno, d.dname, count(e.empno) "number of employees"
FROM dept d, emp e
WHERE d.deptno = e.deptno
GROUP BY d.deptno, d.dname
您需要明确地告诉DB别名指的是什么。错误消息可能提到了无效/缺少的标识符“d”,这意味着它不知道该标识符是什么。在sql server中会是这样的
SELECT d.deptno,d.dname,
COUNT(e.empno) as number_of_employees
FROM dept d,emp e
WHERE d.deptno = e.deptno
GROUP BY d.deptno,d.dname
the error occurs when you undefined the instance of the table used
以防万一,会有更多的优化
选择d.deptno,d.dname,
将empno计算为员工人数
从d部门加入emp e
关于d.deptno=e.deptno
d.deptno,d.dname分组
在sql server中,它将类似于
SELECT d.deptno,d.dname,
COUNT(e.empno) as number_of_employees
FROM dept d,emp e
WHERE d.deptno = e.deptno
GROUP BY d.deptno,d.dname
the error occurs when you undefined the instance of the table used
以防万一,会有更多的优化
选择d.deptno,d.dname,
将empno计算为员工人数
从d部门加入emp e
关于d.deptno=e.deptno
d.deptno,d.dname分组
试一试
试一试
这在count之前缺少逗号您可能不需要在列名周围加引号。您使用的是哪种SQL变体?当你试着运行上面的程序时发生了什么?如果你收到一条错误信息,就把它贴出来。如果得到意外结果,请描述它。缺少a或AS。缺少count之前的逗号。您可能不需要在列名周围加引号。您使用的是哪种SQL变体?当你试着运行上面的程序时发生了什么?如果你收到一条错误信息,就把它贴出来。如果您得到了意外的结果,请描述它。您缺少a或AS。您的第三点不是语法错误。可以进行交叉连接,然后过滤WHERE子句。同意,让我编辑。但是您认为查询优化器会自动将其作为内部联接吗?可能是这样,但我总是显式地编写连接。更具可读性,尤其是当您有多个联接时。对吧?你的第三点不是语法错误。可以进行交叉连接,然后过滤WHERE子句。同意,让我编辑。但是您认为查询优化器会自动将其作为内部联接吗?可能是这样,但我总是显式地编写连接。更具可读性,尤其是当您有多个联接时。对吗?这句话不是笛卡尔乘积,而不是内部联接吗?我不这么认为,我认为它在Oracle中的实现有点不同,因为他们没有很好地使用标准。好吧,这比使用“内部联接”性能更好,因为这是事后才实现的。从语句中得到的不是笛卡尔积,而是内部联接吗?我不这么认为,我认为它在Oracle中的实现有点不同,因为他们没有很好地使用标准。恐怕这比使用“内部联接”性能更好,因为这是事后才实现的。如果有人使用Microsoft Dynamics CRM,我在此基础上创建了一个变体来显示此查询中每个帐户的联系人数:从accountbase a中选择a.AccountId、a.Name、COUNTc.ParentCustomerId作为联系人数,contactbase c其中a.accountid=c.ParentCustomerId组BY a.accountid,a.Name如果有人使用Microsoft Dynamics CRM,我在此基础上创建了一个变体,以显示此查询中每个帐户的联系人数:选择a.accountid,a.Name,COUNTc.ParentCustomerId作为accountbase a中的联系人数,contactbase c,其中a.accountid=c.ParentCustomerId组由a.accountid、a.Name组成