Ⅰ sql 分组统计并排序
group
by语句必须和聚合函数一起使用.
select
c,max(d)
from
a
group
by
c
order
by
max(d)
desc
这样子可以.
因为一条select语句只可以返回一个结果集...
此句返回按c分组后并按每组中最大的d值进行排序.
Ⅱ SQL如何对分组后运算出来的结果进行排序
提供两种方案,第一种是降序
select sno,avg(grade) 'nihao' from sc
group by sno order by 'nihao' desc
第二种是升序
select sno,avg(grade) 'nihao' from sc
group by sno order by 'nihao' asc
其中‘nihao’表示avg(grade)这个列的别名
Ⅲ sql group 后按分组数量的多少排序怎么写
数据表内有一个种类字段,把商品分成了N种,我想使用sql语句列出有多少种类,也就是group by 种类 ,但是我想输出时是按种类的多少进行排序,也就是历史类有100个产品 自然类有200个产品 法律类有300个产品
那么就输出
法律 300
自然 200
历史 100
select 种类,sum(数量) from 表名 group by 种类 order by sum(数量) desc
试试:
<?php
$sql="SELECT procts_id,COUNT(procts_id) FROM orders_procts GROUP BY procts_id ORDER BY COUNT(procts_id) DESC";
?>
Ⅳ sql 查询每个分组下的前几条记录并排序
比如 表 table1,分类 type,读取分类前5条,合并在联查,并且排序
select * from
(
SELECT top 5 * FROM table1 where type=1
UNION
SELECT top 5 * FROM table1 where type=2
UNION
SELECT top 5 * FROM table1 where type=3
) as table_new order by id desc
Ⅳ SQL 分组统计并排序
with tmp as
(select row_number() over(order by count(val)) as rn,val,count(val) as cnum from table1 group by val)
select * from tmp where rn<3
要想区别并列现象还要复杂一些,可能简单的语句解决不了
Ⅵ sql语句,先分组查询,在算每组的行数,在排序
只能用存储过程
思路如下
将分组那个字段比如是A
Create temp table tmp_b
foreach
select distinct A into bianlianga from table
insert into tmp_b
select top 2 B from table where A=bianlianga order by B ;
delete from table where A=bianlianga and B in(select * from tmp_b);
end foreach
Ⅶ sql 分组查询 分组查询查询每组的前几条数据
sqlserver:
select * from (
select *,row_number() over(partition by 分组列 order by 组内排序列) as rn from table
) as a where rn<=2
Ⅷ sql取出每个分组的前几条
一个简单的方法就是排序之后给它分配序号,根据序号去找前几条
select*
from(select公司,人数,
--按人数从多到少分配序号,不同公司会重1开始
rank()over(partitionby公司orderby人数desc)asxh
from公司档案)asA
wherexh<=2--取前几位就写几
orderby公司,人数desc
排序效果如下
Ⅸ sql如何分组选择显示最新的一条数据
sql如何分组选择显示最新的一条数据
首先,该问题对应的SQL如下
select 采购类别,客户,订货总额
from (select 采购类别,客户,订货总额,
row_number() over(partition by 采购类别 order by 订货总额 desc) rn
from table_name) awhere rn<=2
;
其次,常用数据库比如Oracle和Sqlserver都有特定函数完成分组排序的功能,如果需要显示并列的情况可以用下面另外的2个.
分别有3个类似函数:
row_number() over
这个函数不需要考虑是否并列,哪怕根据条件查询出来的数值相同也会进行连续排名。也是最常用的函数,排序结果类似于1,2,3,4,5
rank() over
查出指定条件后进行一个排名,但是有一个特点。假如是对学生排名,那么实用这个函数,成绩相同的两名是并列。排序结果类似于1,2,2,4,5
dense_rank() over
比较特殊,排序结果类似于1,2,2,3,4