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

  • 相关阅读:
    尤瓦尔•赫拉利简史三部曲读书笔记
    5星|《城市与国家财富》:经济发展的基本单位是城市而不是国家
    oracle SQL Develop导出数据库中的表格数据到excel
    selvert的过滤器filter处理中文乱码
    jsp中四种传递参数的方法
    Mybatis中配置Mapper的方法
    JAVA文件中获取路径及WEB应用程序获取路径方法
    MyEclipse 常用设置
    Java连接oracle数据库的OCI和thin
    Java连接oracle数据库的OCI和THIN
  • 原文地址:https://www.cnblogs.com/jianrenmo/p/10374502.html
Copyright © 2011-2022 走看看