当前位置:首页 » 编程语言 » sql分组统计

sql分组统计

发布时间: 2022-01-13 04:32:27

sql 分组统计

--SQL SERVER 2000 动态SQL。
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名'
exec(@sql)

普通行列转换
问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果):
姓名 语文 数学 物理
---- ---- ---- ----
李四 74 84 94
张三 74 83 93
-------------------
*/
create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values('张三' , '语文' , 74)
insert into tb values('张三' , '数学' , 83)
insert into tb values('张三' , '物理' , 93)
insert into tb values('李四' , '语文' , 74)
insert into tb values('李四' , '数学' , 84)
insert into tb values('李四' , '物理' , 94)
go

--SQL SERVER 2000 静态SQL,指课程只有语文、数学、物理这三门课程。(以下同)
select 姓名 as 姓名 ,
max(case 课程 when '语文' then 分数 else 0 end) 语文,
max(case 课程 when '数学' then 分数 else 0 end) 数学,
max(case 课程 when '物理' then 分数 else 0 end) 物理
from tb
group by 姓名

㈡ SQL分组统计

其实倒也不难,请解释下:
需要统计的数据列表如下:
门店名称|本在本消费金额|本在他消费金额|他在本消费金额
本在本、本在他、他在本 都是什么意思?????

㈢ sql语句 如何分组后得到记录总数

SELECT COUNT(*)

FROM (SELECT 分组字段 FROM 表

GROUP BY 分组字段

)别名


或者

SELECT COUNT(*)

FROM (SELECT distinct 分组字段 FROM 表)别名

(3)sql分组统计扩展阅读:

SQL分组查询

在SQL Server中使用的分组查询是ORDER BY子句,使用ORDER BY子句要同聚合函数配合使用才能完成分组查询,在SELECT查询的字段中如果字段没有使用聚合函数就必须出现在ORDER BY子句中(即SELECT后边的字段名要么出现在聚合函数中,要么在ORDER BY子句中使用)

在分组查询中还可以配合使用HAVING子句,定义查询条件。

使用group by进行分组查询

在使用group by关键字时,在select列表中可以指定的项目是有限制的,select语句中仅许以下几项:

1、被分组的列

2、为每个分组返回一个值得表达式,例如用一个列名作为参数的聚合函数

3、group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面

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

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

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

㈤ sql分组合并统计查询

select 部门,count(姓名) 人数,(select count(*) from biao where 部门=a.部门 and 状态='状态1') as 状态1,(select count(*) from biao where 部门=a.部门 and 状态='状态2') as 状态2,(select count(*) from biao where 部门=a.部门 and 状态='状态3') as 状态3,(select count(*) from biao where 部门=a.部门 and 状态='状态4') as 状态4 from biao a group by 部门

㈥ sql语句实现分组统计

方法和详细的操作步骤如下:

1、第一步,创建一个测试表,详细代码见下图,转到下面的步骤。

㈦ 高级sql 分组查询统计

用with rollup 可以生成汇总数据,我没环境没法测,只提供思路,用的是楼上oracle的语法
结果是下面这样的,不知是不是你想要的
门店 年月日 数据1 数据2
a 2011-08-24 1 2
a 2011-08-25 3 4
a 2011-08合计: 4 6
a 2011-09-01 5 6
a 2011-09合计: 5 6
select
门店,
case when grouping(to_char(时间,'yyyy-mm-dd'))=0 then to_char(时间,'yyyy-mm')||'合计:' else to_char(时间,'yyyy-mm-dd') end as 年月日
sum(数据1) as 数据1,
sum(数据2) as 数据2
from tab
group by 门店,to_char(时间,'yyyy-mm'),to_char(时间,'yyyy-mm-dd') with rollup
order by to_char(时间,'yyyy-mm'),to_char(时间,'yyyy-mm-dd')

㈧ sql语句 怎么分组统计

USEtest;
CREATETABLEIFNOTEXISTStable1(
idINTPRIMARYKEY,
datetimeColDATETIMENOTNULL,
contentVARCHAR(256)
);
INSERTINTOtable1(id,datetimeCol,content)VALUES(1,"2018-01-0102:02:00","abc");
INSERTINTOtable1(id,datetimeCol,content)VALUES(2,"2018-03-0404:02:00","zxc");
INSERTINTOtable1(id,datetimeCol,content)VALUES(3,"2018-01-0102:18:00","abc12");
INSERTINTOtable1(id,datetimeCol,content)VALUES(4,"2018-04-0423:01:40","mb");
SELECTgroupCol,COUNT(id)AScountColFROM(SELECTEXTRACT(HOURFROMdatetimeCol)ASgroupCol,idFROMtable1);

结果为:

groupCol, countCol

2, 2

4, 1

23, 1

㈨ sql 语句如何分组统计,并用统计结果除以150

直接加上运算符试试: select sj,count(sj)/数 as 平均数 from sheet1 group by sj

热点内容
php种子怎么打开 发布:2024-11-15 06:07:01 浏览:345
密码箱的密码忘记了如何开锁 发布:2024-11-15 06:04:41 浏览:955
安卓软件和苹果系统哪个好 发布:2024-11-15 05:48:32 浏览:283
pythonwhileelse 发布:2024-11-15 05:39:10 浏览:671
java文件流上传文件 发布:2024-11-15 05:24:02 浏览:147
linux安装so 发布:2024-11-15 05:22:29 浏览:581
九游版冒险王2适合安卓哪个版本 发布:2024-11-15 05:12:33 浏览:600
iphonexsmax怎么连接服务器 发布:2024-11-15 05:11:46 浏览:775
长江存储校招 发布:2024-11-15 05:11:01 浏览:966
oraclesql函数大全 发布:2024-11-15 05:10:00 浏览:465