table_department,系表,主键idtable_class,班级表,主键id,字段department_id对应系表的idtable_students,学生表,主键id,字段class_id对应班级表的id现在需要统计每个系的学生数量,生成一个列表,请问sql语句怎么写?
解决方案 »
- oracle 中如何在drop table之前先判断此表是否已存在,若存在,则删除
- SPOOL 最大文件限制
- 更新表序列号
- 请问如何用vc++实现Oracle9i的导入导出功能啊?急求,谢谢了!
- 如何在vc++6.0中内嵌call调用oracle10g过程
- 急救!!!导入导出的问题?
- redhat linux 7.2下 安装 oracle 8.1.7 的问题
- 我发觉ORACLE的错误码,有些时ORA开头的,有些是TNS开头的,有什么区别吗?还有以其它开头的吗?在哪里可以找到所有的错误码?
- 请问一个pl/sql语句块(不是存储过程)可以有输出变量吗,应该怎么写?谢谢
- 在Oracle中如何读外部文本
- orale整表导到Access问题
- 不同客户的数据库怎样同步更新,怎样对比结构差异,怎样维护客户数据库
SELECT D.ID,COUNT(1) COUNTS
FROM TABLE_STUDENTS S,
TABLE_CLASS C,
TABLE_DEPARTMENT D
WHERE S.CLASS_ID = C.ID
AND C.DEPARTMENT_ID = D.ID
GROUP BY D.ID;
执行不了,提示"不是group by"表达式
SELECT D.ID,D.NAME,COUNT(1) COUNTS
FROM TABLE_STUDENTS S,
TABLE_CLASS C,
TABLE_DEPARTMENT D
WHERE S.CLASS_ID = C.ID
AND C.DEPARTMENT_ID = D.ID
GROUP BY D.ID;为什么多加个系名就不行?那这样行不行,如果两个系id不同,name相同会不会有问题?SELECT D.NAME,D.NAME,COUNT(1) COUNTS
FROM TABLE_STUDENTS S,
TABLE_CLASS C,
TABLE_DEPARTMENT D
WHERE S.CLASS_ID = C.ID
AND C.DEPARTMENT_ID = D.ID
GROUP BY D.NAME;
A1:COUNT(1)和COUNT(*)没有什么区别Q2: 执行不了,提示"不是group by"表达式, 为什么多加个系名就不行?
A2: 如果使用了GROUP BY,那么SELECT中的列必须出现在GROUP BY列中,或者SELECT上的列使用了聚合函数。Q3: 那这样行不行,如果两个系id不同,name相同会不会有问题?
A3: 那俺就无语了。Q4:另外请问这种写法效率怎么样,正式环境学生表很大
A4:其他的高手应该有办法的。呵呵。
*/
SELECT D.ID,D.NAME,COUNT(1) COUNTS
FROM TABLE_STUDENTS S,
TABLE_CLASS C,
TABLE_DEPARTMENT D
WHERE S.CLASS_ID = C.ID
AND C.DEPARTMENT_ID = D.ID
GROUP BY D.ID,D.NAME;