❶ MYsql 多数据 联合查询 ORDER BY ,COUNT() 速度慢,求改SQL
selectl.f_id,l.f_lecturer_name,l.f_user_id,l.f_user_name,l.f_skill,l.f_train_number,l.f_course_number,l.f_train_student_number,sum(casewhencl.f_creditisnullthen0whencl.f_creditisnotnullthencl.f_creditend)ascredit,l.f_fractionfromt_lecturerlleftjoint_credit_logcloncl.f_type=2andcl.f_user_id=l.f_user_idgroupbyl.f_user_idorderbyl.f_fractiondescLIMIT0,20
能帮我看看嘛?在oracle中报错了 979: ORA-00979: 不是 GROUP BY 表达式
❷ sql count排序的语句
Count排序语法如下:
Select * from (Select Count(字段名) as 别名 from 表名 Group By 字段名) as [查询1] order by [查询1].字段
Count语句不支持where和order by,把他先整理成一个查询,再去排列筛选就好了。
❸ sql语言order by后面跟一个计算出的结果
如果是在SQLSever中用那条语句查询的话,把WHERE后面的那个等号要改成 *= (即左连接)试试。
比较困惑的一点是,COUNT()用来统计元组的个数,你Order by后面加个COUNT()统计出来的数值,那是什么意思??Order by用对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)进行排列的啊。注意是对属性列,而不是对一个具体的数值进行排序的啊。。。
❹ sql选择哪个系学生借书最多 怎么写
select top 1 department
from borrow,card
where borrow.cno=card.cno
grooup by department
order by count(*) desc
❺ SQL中count(*) as人数 排序时 order by 人数还是order by count(*)为什么
你好!
在同一条搜索语句中,可以用年龄,把year(date())-year(出生日期)的别名看做“年龄”
oracle语句中是没有as的
SQL中count(*)
as人数
排序时
order
by
人数还是order
by
count(*)?
答:order
by
你必须明白是按什么牌的,desc,asc等
仅代表个人观点,不喜勿喷,谢谢。
❻ SQL2000 查询数据库中表的记录数,并按照从多到少的顺序排列
假设student表有两个字段:name和age,张三是20岁,李四是21岁,王五是22岁
SQL语句:select * from student order by age desc
查询结果:王五 22
李四 21
张三 20
SQL语句:select * from student order by age
查询结果:张三 20
李四 21
王五 22
第二条sql语句没有加desc,默认是升序:asc
还是没看明白你的问题,难道是查询某个数据库中的每张表的记录行数?但你说的是列数!建议你还是直接写SQL语句上来!
江湖三脚猫同志写的语句还是不错的,但估计是没有执行过的sql语句,真正执行,可能会有一点小瑕疵,order by count 的前提是有count这个列名,这条sql语句执行的话,列名应该是“count(*)”之类的吧?oracle中是这样的,SQL Server不记得了,貌似也是这样的列名,所以建议写成 select count(1) as count 这个样子,这样一来,再order by count就肯定没问题了。
我是觉得不用存储过程,用SQL语句就可以实现,只不过用一个嵌套式的sql罢了,建议提问的这位兄弟自己琢磨一下,或者将问题描述清楚,否则真的是 爱莫能助,good luck !
❼ SQL优化问题:select count(*) from test where col3 >= 5 group by col1 order by count(*);
字段名,表名,数据库名之类作为变量时,必须用动态sql
eg:
declare
@fname
varchar(20)
set
@fname
=
'filedname'
select
@fname
from
tablename
--
错误,不会提示错误,但结果为固定值filedname,并非所要。
exec('select
'
+
@fname
+
'
from
tablename')
--
请注意
加号前后的
单引号的边上加空格
当然将字符串改成变量的形式也可
declare
@fname
varchar(20)
set
@fname
=
'filedname'
--设置字段名
declare
@s
varchar(1000)
set
@s
=
'select
'
+
@fname
+
'
from
tablename'
exec(@s)
--
成功
exec
sp_executesql
@s
--
此句会报错
declare
@s
nvarchar(1000)
--
注意此处改为nvarchar(1000)
set
@s
=
'select
'
+
@fname
+
'
from
tablename'
exec(@s)
--
成功
exec
sp_executesql
@s
--
此句正确
就写这么多了!希望对你有所帮助
❽ sql中order by和group by的区别
1、意思不一样。
order by 是指从英文里理解就是行的排序方式,默认的为升序。后面必须列出排序的字段名,可以是多个字段名。
group by 是指从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
2、适用范围不同:order by 用于排序,一般与asc升序或desc降序一起使用。例如select * from 表A order by 列a。
group by 用于分类汇总,一般与聚合函数(比如avg平均、sum合计、max最大、min最小、count计算行)一起使用。例如select 月份,sum(工资)as 总工资 from 工资表 group by 月份。
3、定义不同:order by主要侧重许多数据的排序,例如按照大小顺序对数据进行排列,group by主要侧重许多数据的分组,例如按照性别、年龄、国家、学科等进行分组。
4、使用的函数不一样。
order by子句中的列必须包含在聚合函数或 GROUP BY 子句中。
group by 子句中可使用的函数AVG() 、MIN() 、 MAX() 、SUM() 、COUNT() 。
5、order by从英文里理解就是行的排序方式,默认的为升序。order by后面必须列出排序的字段名,可以是多个字段名。
group by从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
(8)sqlorderbycount扩展阅读
Microsoft Jet数据库引擎SQL 数据类型 由13个基本数据类型组成,它们是由 Microsoft Jet 数据库引擎和几个验证过的有效同义字定义的。常见的有:整形,单精度,双精度,可变长度字符,固定长度字符,长型,日期等等。
可以用ALTER TABLE 语句修正基数和增量。刚插进表中的行会有自动为基于新种值和增量值的列生成的值。如果新种和增长的值和以前的种值及增量匹配,就会造成复制。如果这个列是主键,复制值生成时可能导致错误。
定义成TEXT也称作MEMO)或CHAR(也称作有具体长度的 TEXT(n))的字段中的字符被储存在 Unicode 表示格式。
Unicode字符一律需要两个字节存储每一字符。对于现有的主要包含字符数据的 Microsoft Jet数据库,这可能意味着数据库文件被转换成 Microsoft Jet 4.0格式时字长会增加将近一倍。
然而,从前由单字节字符群(SBCS)指示的众多字符群的Unicode 表示可以很容易地被压缩成一个单字节。有关的详细信息,参见CREATE TABLE。如果用COMPRESSION属性定义CHAR列,数据存储时会自动被压缩,提取时解压缩。
❾ sql查询语句 给出4张表,找出雇员最多的公司
mysql
select company_name, count(employee_name) employee_count
from works
group by company_name
order by count(employee_name) desc limit 1,1
sql server
select top 1 company_name, count(employee_name) employee_count
from works
group by company_name
order by count(employee_name) desc
❿ SQL中count(*) as人数 排序时 order by 人数还是order by count(*)为什么
order by 人数
因为先把数据查出来,且把count(*)命名为人数,然后才进行排序的.
order by在select后