⑴ sql 分组
select t1.name,t1.grade,sum(t2.chengji) as chengji from t1,t2 where t1.id=t2.id group by t1.name,t1.grade
⑵ sql 分组编序号
题主你已经把SQL文写出来了,既然谁时间早排前面,那你把desc去掉就行了。
SELECT*FROM(SELECTROW_NUMBER()OVER(PARTITIONBYSUBSTRING(CONVERT(varchar(100),Time,20),0,11)ORDERBYTime)ASxh,*FROMdbo.表)T
我用的oracle数据库,sql文如下:
SELECT*FROM(SELECTROW_NUMBER()OVER(PARTITIONBYto_char(t.time,'yyyy-mm-dd')ORDERBYTime)ASxh,t.*FROMtestt)
⑶ sql分组查询
1
select min(e_name)e_name,dept_id from employee where 工作级别=2 group by dept_id
2
select dept_id, count(*) e_num from employee group by dept_id having count(*)<3
⑷ 请问一下:有一个表,根据它的id分组查询(分组后的每个id)前4条数据,怎样写sql语句
首先,按照id分组后的前4条数据是根据什么字段排序取的前4条数据,假设情况如下。表有两列,一列为id列,一列为排序列,假设为score。即表如下:
id score
1 99
1 98
1 97
1 96
1 95
2 100
2 87
2 96
……
你所要的结果应该是这样的?取按照课程号分组后,取每个课程号的前4个高分的情况。
select t.id,t.score from (select id,score,rank() over (partition by id order by score desc) ranks from 表) t where t.ranks<=4;
以上语句在比如数分数为第三名的有两个同学,那么就会显示两条数据,而不是一条。如果没有这样的要求,可以使用rownum实现。
⑸ sql 分组 编号
如果有主键列,假设主键为ID:
select 列名,nid = (select count(1) from 表名 where 列名= a.列名 and id <= a.id)
from 表名 a
如果没有主键列,必须造一个:
select identity(int,1,1) as id ,* into # from 表名
select 列名,nid = (select count(1) from # where 列名= a.列名 and id <= a.id)
from # a
SQL SERVER 2005及以后的版本,可以用roy_88的语法
⑹ SQL分组查询
SQL Server 2005 下测试通过.
表名为 TestIchxxt
1.连续5天都报道的用户
SELECT
UID, Server
FROM
TestIchxxt
WHERE
(SELECT
sub.Weekday + ''
FROM
TestIchxxt sub
WHERE
sub.UID = TestIchxxt.UID
AND sub.Server = TestIchxxt.Server
ORDER BY
Weekday
FOR XML PATH('')
) = '12345'
GROUP BY
UID, Server
2.连续3天或4天(不包括5天)报道的用户
SELECT
UID, Server
FROM
TestIchxxt
WHERE
(SELECT
sub.Weekday + ''
FROM
TestIchxxt sub
WHERE
sub.UID = TestIchxxt.UID
AND sub.Server = TestIchxxt.Server
ORDER BY
Weekday
FOR XML PATH('')
) IN ('1234', '2345', '123', '234', '345')
GROUP BY
UID, Server
⑺ sql要按id分组查询,就是1到5一组,6到10一组,一直往后,这种sql怎么写,id唯一
你拿一个唯一的id分组? 分个锤子分,分组的概念是什么? 将具有共同特性的数据整合,概念不通,瞎问
⑻ SQL中用Group by 分组 假如有个字段ID,值1~10,想分成3组(1,3,7)(2,4,5,6)(8,9,10)
select id,sum(case when id in (1,3,7) then 1 else 0 end),
sum(case when id in (2,4,5,6) then 1 else 0 end),
sum(case when id in (8,9,10) then 1 else 0 end)
from tb group by id
这个意思?
-----补充-----
select num,sum(case when id in (1,3,7) then num else 0 end),
sum(case when num in (2,4,5,6) then num else 0 end),
sum(case when num in (8,9,10) then num else 0 end)
from tb group by num
试验下这个
⑼ 通过SQL语句,分组生成ID。如下图,已知code(编码)和level(层级),要求通过sql语句,实现ID的生成;
如果你得到了利用SQL生成这样的ID通知我下我也看看,用SQL我还真不会
但是如果用前台界面表单提交生成这个ID倒是不难
⑽ sql中的group by id1,id2 是如何根据这两个字段进行分组的
按(id1, id2)的实际值进行分组,如:
--------------------
一年级,1班
一年级,2班
二年级,1班
二年级,2班
一年级,3班