当前位置:首页 » 编程语言 » sql按照字段分类
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql按照字段分类

发布时间: 2022-12-23 06:52:45

㈠ 写一句sql,来按照把表T按照B的字段长度来分类统计。

CreateTableT
(
Aint,
BVarchar(10)
)

insertintoTvalues(1,'aa')
insertintoTvalues(2,'ab')
insertintoTvalues(3,'abc')
insertintoTvalues(4,'abcde')
insertintoTvalues(5,'abcde')

--这个统计1到B(最大长度)之间的每个长度的个数(如图)
WithCT
As
(
SelectMAX(LEN(B))AsLengFromT
unionAll
SelectLeng-1fromCTWhereLeng>1
)
SelectLeng,SUM(CAseWhenBisnullThen0Else1End)AsCntFrom
(
SelectA.Leng,T.BFromCTALeftJoinTonA.Leng=Len(T.B)
)SGroupByLeng

--这个简化版,统计B不同长度的个数
SelectLEN(B)AsLeng,COUNT(*)AsCntFromT
GroupbyLEN(B)

㈡ 求SQL语句根据字段分组

首先,使用下面语句:
select date, count(date) cnt from user where date is not null group by date
结果:
date cnt
1月 2
2月 2
3月 1

在上面语句基础上改进,使之与要求结果一致:
select max(case when date = '1月' then cnt else 0 end ) 1月,
max(case when date = '2月' then cnt else 0 end ) 2月,
max(case when date = '3月' then cnt else 0 end ) 3月
from (select date, count(date) cnt from user where date is not null group by date)

㈢ SQL如何查询一张表的所有字段并按其中一个字段进行分组

1、创建测试表,

create table test_group_cols(id number, value varchar2(20), remark varchar2(20));

㈣ 何对SQL一个字段中的信息进行分类统计汇总

你这字段写的有点乱,看不太明白。

这表名和列名都没贴出来,不知道该怎么帮你写

你要求合汇总的字段名叫什么啊?这里我按“时间”来吧

之后你把时间改成你那列名就行。

select sum(时间) from 表名 where 列名 ='C620';

或者

select 列名1,sum(时间) from 表名 where 列名1 in (C620,Z35,......) group by 列名1;

那列名1就是C620所在的列,你想对几个值汇总,就在()里加几个就行。

㈤ sql里查询一个字段里的记录的多个类的汇总(几个字段按不同分类的汇总)

--技术要点:行转列
--以下提供SQL SERVER语句

--创建测试环境
create table tab
(
machine int,
sernum varchar(10),
area varchar(2),
PF varchar(1)
)
--制造数据
insert into tab select 462,'16205R3E','AT','P'
insert into tab select 462,'16203H0N','AT','F'
insert into tab select 316,'1620A7WP','AT','S'
insert into tab select 316,'16206CCC','AT','S'

--1. 静态行转列(所谓静态,是指的PF列只有P,F,S这三个值,或者值是固定的某几个值)
select machine,
max(case pf when 'P' then num else 0 end) as P,
max(case pf when 'F' then num else 0 end) as F,
max(case pf when 'S' then num else 0 end) as S
from
(select machine,pf,count(1) as num from tab group by machine,pf
)tb
group by machine

/* 结果集
machine P F S
----------- ----------- ----------- -----------
316 0 0 2
462 1 1 0

(2 row(s) affected)
*/

--2. 动态行转列(相对于静态的概念)
declare @sql varchar(8000)
set @sql = 'select machine as ' + 'machine'
select @sql = @sql + ' , max(case pf when ''' + pf + ''' then num else 0 end) [' + pf + ']'
from (select distinct pf from tab) as a
set @sql = @sql + ' from (select machine,pf,count(1) as num from tab group by machine,pf
)tb group by machine'
exec(@sql)

/* 结果集
machine F P S
----------- ----------- ----------- -----------
316 0 0 2
462 1 1 0

(2 row(s) affected)
*/

--删除环境
drop table tab

㈥ sql中根据表中一个字段分组如何分别统计每个分组的记录数

分组统计可以参考以下操作:

当数组重复的时候分组才有意义,因为一个人也可以分为一组,只是没有意义而已,分组采用GROUP BY语句完成,语法如下:

㈦ SQL 单表查询按字段分类统计如何横排显示

嵌入写:即简单,又易懂
select name ,
case type when '白班' then '1' else '' end as dayjob ,
case type when '夜班' then '1' else '' end as nightjob
from work
把上面这句做为整体,嵌入到下面。
select a.name ,count(a.dayjob),count(a.nightjob) from
(
select name ,
case type when '白班' then '1' else '' end as dayjob ,
case type when '夜班' then '1' else '' end as nightjob
from work
) as a group by a.name

括号里面就是一个子查询,这样就可以达到你的要求。

㈧ SQL 中如何根据只根据第一个字段分组

使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值为1的记录即可。目前主流的数据库都有支持分析函数,很好用。
其中,partition by 是指定按哪些字段进行分组,这些字段值相同的记录将在一起编号;order by则是指定在同一组中进行编号时是按照怎样的顺序。
示例(SQL Server 2005或以上适用):

123456
select s.* from ( select *, row_number() over (partition by [手机号] order by [店铺]) as group_idx from table_name) swhere s.group_idx = 1

㈨ AB两个字段,怎么写sql生成C字段,使里面的数根据B字段分类,根据A字段排序写1234.。

楼主好,楼主所需要的功能是分组后组内排序功能吧?你可以使用SQL的分析函数和开窗函数,很简单就可以实现:
select *,row_number() over (partition by B order by A) as c from table
上述SQL即可满足楼主。row_number()函数是生成序列码,然后进行开窗,开窗指的是一个范围内进行计算,即over开窗函数,中间写的partition by 是按照什么粒度进行分组,order by则是按照什么排序计算,整合起来就是排序在前面的会先生成序列码,一个组内进行生成即可。

㈩ sql中,按照某个字段的内容进行分组,并在组内加序号

sqlserver2005及以上版本
SELECT
ROW_NUMBER()
OVER(PARTITION
BY
种类
ORDER
BY
种类)
AS
序号,*
FROM