分组sql
❶ 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中分组短语是:group by。
GROUP BY 语句
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
GROUP BY 语法
SELECT column_name, aggregate_function(column_name)FROM table_name WHERE column_name operator valueGROUP BY column_name
Group By 的使用:
1、 Group By [Expressions]:
这个恐怕是Group By语句最常见的用法了,Group By + [分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。比如有如下数据集,其中水果名称(FruitName)和出产国家(ProctPlace)为联合主键:
SELECTFruitName,ProctPlace,Price,IDASIDE,Discount
FROMT_TEST_FRUITINFO
WHERE(ProctPlace=N'china')ORDERBYIDE
这里只有在ORDER BY语句中才可以使用IDE,其他条件语句中如果需要引用列名则只能使用ID,而不能使用IDE。
以上就是Group By的相关使用说明。内容参考与网站CSDN中的“SQL语句Group By 语句小结“。
❸ 分组sql语句
正常情况下,一楼的执行后会报错,因为分组时丢下了Dep.DepName
再一个,你也没问清楚,你想取Sale表里的什么字段,是销售额的汇总还是条数?这样说不清楚的话就没法写了,再说,如果单纯的靠Sale.DepID和Sale.ProdID这两个字段分组,其他两个表根本就没用,因为这两个字段在销售表中都存在
❹ SQL 分组
select
学生编号,学生姓名,sum(分数)
as
总分数
from
student
group
by
学生编号,学生姓名
学生编号分组放在姓名前面
这样即使姓名一样
但是学号不一样
还是2条值!~
❺ 数据库中如何分类、分组并总计SQL数据
通常,我们确实需要对所有数据进行排序。SQL的ORDER BY子句将数据按字母或数字顺序进行排列。因此,同类数据明显分类到各个组中。然而,这些组只是分类的结果,它们并不是真正的组。ORDER BY显示每一个记录,而一个组可能代表多个记录。 2、减少组中的相似数据 分类与分组的最大不同在于:分类数据显示(任何限定标准内的)所有记录,而分组数据不显示这些记录。GROUP BY子句减少一个记录中的相似数据。例如,GROUP BY能够从重复那些值的源文件中返回一个唯一的邮政编码列表: SELECTZIP FROMCustomers GROUPBYZIP 仅包括那些在GROUP BY和SELECT列列表中字义组的列。换句话说,SELECT列表必须与GROUP列表相匹配。只有一种情况例外:SELECT列表能够包含聚合函数。(而GROUP BY不支持聚合函数。) 记住,GROUP BY不会对作为结果产生的组分类。要对组按字母或数字顺序排序,增加一个ORDER BY子句(#1)。另外,在GROUP BY子句中您不能引用一个有别名的域。组列必须在根本数据中,但它们不必出现在结果中。 3、分组前限定数据 您可以增加一个WHERE子句限定由GROUP BY分组的数据。例如,下面的语句仅返回肯塔基地区顾客的邮政编码列表。 SELECTZIP FROMCustomers WHEREState='KY' GROUPBYZIP 在GROUP BY子句求数据的值之前,WHERE对数据进行过滤,记住这一点很重要。
❻ sql 分组再分组 语句怎么写
你再说明一下 更进一步要求是:上述记录中,只要czy字段内容有不同的 是什么意思?
比如说这样的记录
02 001
02 001
两个字段都相同 那么这个查询要不要呢?
再比如
02 001
02 001
02 002
查询出来的又是什么?三条记录都要吗?
❼ 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、第一步,创建一个测试表,详细代码见下图,转到下面的步骤。
❾ SQL语句分组怎么写
1.如果你的时间格式是2012-01-13 17:35:52.217这样的形式,(主要是那个01不要是1),用下面这个 SELECT convert(varchar(10),时间,23),SUM(数字数据) FROM 表 group by convert(varchar(10),时间,23) 2.如果你的时间格式不是上面的格式,先转化成datetime: SELECT convert(varchar(10),cast(时间 as datetime),23) ,SUM(数字数据) FROM 表 group by convert(varchar(10),cast(时间 as datetime),23) 3.如果报错,请追问~