数据库 分组统计问题

来源:互联网 发布:人工智能资料百度云 编辑:程序博客网 时间:2024/04/27 18:58

 最经有人问我分组统计的问题,感觉很简单 ,拿起笔却没有完整下下来,今天索性自己整理一下

产品表  Products

CREATE TABLE [dbo].[Products](

    [Id] [int] IDENTITY(1,1) NOT NULL,

    [TypeID] [int] NOT NULL,

    [BrandID] [int] NOT NULL,

    [ProName] [nvarchar](50) NOT NULL,

    [Description] [nvarchar](500) NULL,

    [Attribute] [nvarchar](500) NULL,

    [Overview] [nvarchar](500) NULL,

    [Price] [numeric](18, 2) NULL,

    [Promotion] [numeric](18, 2) NULL,

    [ImgData] [varbinary](max) NULL,

    [ImgMimeType] [varchar](50) NULL,

PRIMARY KEY CLUSTERED

(

    [Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]


问题 一:根据产品表,统计一下表中每种类型产品的销售额

     分析题目要求,

  分析一:说到分组统计  大家知道 肯定要用到 group by来进行分组 ,group by  添加你要分组的字段,要求按照类型分组,说明 group by 后面的字段是TypeID 即 group by typeID,  注意select 后面跟的查询字段 必须是group by 后面的字段或者是聚合函数,否则执行语句会报错。

  分析二:求和需要用到sum()函数,及sum(Price).

  分析三:sql 语句即可写成  select  typeID,sum(Price) fromProducts group by typeID

问题二:根据产品表,统计一下表中每种类型产品的销售额大于100的记录

   分析题目要求,

 分析一:说到分组统计  大家知道 肯定要用到 group by来进行分组 ,group by  添加你要分组的字段,要求按照类型分组,说明 group by 后面的字段是TypeID 即 group by typeID,  注意select 后面跟的查询字段 必须是group by 后面的字段或者是聚合函数,否则执行语句会报错。

  分析二:求和需要用到sum()函数,及sum(Price).

  分析三:每种类型的产品销售额大于100 即条件过滤,在sql语法中条件过滤有where和having 两种类型的条件过滤,where用于对记录的过滤筛选且过滤筛选不能是聚合函数,having用于对分组后的组内记录进行过滤筛选且可以是聚合函数。

 分析四:sql 语句即可写成  select  typeID,sum(Price) fromProducts group by typeID having sum(Price)>100