利用over(),将统计信息计算出来,然后直接筛选结果集
declare t table(
ProductID int,
ProductName varchar(20),
ProductType varchar(20),
Price int)
insert t
select 1,'name1','P1',3 union all
select 2,'name2','P1',5 union all
select 3,'name3','P2',4 union all
select 4,'name4'
这是一道常见的面试题,在实际项目中经常会用到。
需求:求出以产品类别为分组,各个分组里价格最高的产品信息。
实现过程如下:
declare t table(
ProductID int,
ProductName varchar(20),
ProductType varchar(20),
Price int)
–测试数据
insert t
select 1,'name1','P1',3 union all
select 2,'name2','P1',5 union all
select
文章目录1、为表起别名as2、查询前n部分数据:top n 列名:表示查看前n行3、排序:order by 列名1 asc(升序)|desc(降序),列名1 asc|desc…4、消除重复行:distinct5、条件查询:写在where后面6、模糊查询:用于处理字符串类型的值,运算符包括:like % _ [] ^7、null的判断:使用is null或is not null,与其它值计算时返回null,排序时null被认为是最小8、连接:join 表名 on 关联条件9、聚合函数:对行数据进行
前言
上一节我们讲解了数据类型以及字符串中几个需要注意的地方,这节我们继续讲讲字符串行数同时也讲其他内容和穿插的内容,简短的内容,深入的讲解。(可参看文章《详解SQL Server中的数据类型》)
分页方式
在SQL 2005或者SQL 2008中我们是利用ROW_NUMBER开窗函数来进行分页的,关于开窗函数,我们在SQL进阶中会详细讲讲。如下:
USE TSQL2012
GO
DECLARE StartRow INT
DECLARE EndRow INT
SET StartRow = 31
需求:如下图所示
实现sql语句
SELECT A1,SUM(A2*A3) FROM A GROUP BY A1
大家可以自行测试一下,主要需要了解group by语句的用法
您可能感兴趣的文章:分组后分组合计以及总计SQL语句(稍微整理了一下)MYSQL每隔10分钟进行分组统计的实现方法mysql使用GROUP BY分组实现取前N条记录的方法详解MySQL中的分组查询与连接查询语句sql server如何利用开窗函数over()进行分组统计