zoukankan      html  css  js  c++  java
  • SQL分组GROUP BY ROLLUP 简单使用

    最近,在写存储过程的时候遇到一个问题,将数据分组统计时,需要显示全部数据和统计行像Excel表一样,而不是只显示统计数据。一开始想到了循环所有数据,然后统计,拼接的方式,但是实现起来比较麻烦,而且效率很低,通过查询发现了GROUP BY ROLLUP函数,能够解决问题,记录下来和大家分享,文笔和技术水平不高,旨在分享,欢迎指正!

    1、创建表,插入数据

    CREATE TABLE [dbo].[Table_1](
        [Course] [varchar](50) NULL,
        [Name] [varchar](50) NULL,
        [Score] [int] NULL
    )
    INSERT [dbo].[Table_1] ([Course], [Name], [Score]) VALUES (N'Math', N'A', 80)
    INSERT [dbo].[Table_1] ([Course], [Name], [Score]) VALUES (N'Math', N'B', 90)
    INSERT [dbo].[Table_1] ([Course], [Name], [Score]) VALUES (N'Math', N'C', 85)
    INSERT [dbo].[Table_1] ([Course], [Name], [Score]) VALUES (N'English', N'A', 81)
    INSERT [dbo].[Table_1] ([Course], [Name], [Score]) VALUES (N'English', N'B', 91)
    INSERT [dbo].[Table_1] ([Course], [Name], [Score]) VALUES (N'English', N'C', 86)

    此表是学科(Course)、学生(Name)和成绩(Score)的关系表,结构比较随意,只是为了介绍ROLLUP功能。

    2、一个字段分组

    根据Course分组

    SELECT [Course],SUM([Score]) AS TotalScore
    FROM [huo].[dbo].[Table_1]
    GROUP BY [Course]

    使用ROLLUP根据Course分组

    SELECT [Course],SUM([Score]) AS TotalScore
    FROM [huo].[dbo].[Table_1]
    GROUP BY ROLLUP([Course])

    相比前者多了一行合计。

    3、两个字段分组

    根据Course和Name分组

    SELECT [Course],[Name],SUM([Score]) AS TotalScore
    FROM [huo].[dbo].[Table_1]
    GROUP BY [Course],[Name]

    使用ROLLUP根据Course和Name分组

    SELECT [Course],[Name],SUM([Score]) AS TotalScore
    FROM [huo].[dbo].[Table_1]
    GROUP BY ROLLUP([Course],[Name])

    相比前者多了三行合计,GROUP BY ROLLUP 是GROUP BY Course、GROUP BY (Course,Name)和GROUP BY NULL 三种情况的去重集合。

    目前得到的结果集,经过处理就得到了想要的结果。

    参考:https://www.cnblogs.com/lxh1076/p/5697929.html

  • 相关阅读:
    Java实现 LeetCode 211 添加与搜索单词
    跨平台Unicode与UTF8互转代码
    C++转换unicode utf-8 gb2312编码
    c++ ANSI、UNICODE、UTF8互转
    Visual C++ unicode and utf8 转换
    Unicode和UTF-8的关系
    boost uuid 学习笔记
    boost uuid
    Darwin Streaming server 的 Task 类
    VS2010下编译安装DarwinStreamingServer5.5.5
  • 原文地址:https://www.cnblogs.com/jianrenmo/p/10374502.html
Copyright © 2011-2022 走看看