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

  • 相关阅读:
    京东采集器100元、求安慰(京东产品、评价(好评、中评、差评)、价格(参考价、京东价)、图片(大图、小图)、图片识别、广告语)
    Oracle数据库创建表ID字段的自动递增
    iv
    oracle 无监听,无法用ip连接问题(ORA12541: TNS无监听程序错误 )
    sql exp
    dockManager1、dockpanl使用笔记
    windows常用控件
    ComboBoxEdit数据绑定
    winform窗体传值
    分组匹配的一个示例
  • 原文地址:https://www.cnblogs.com/jianrenmo/p/10374502.html
Copyright © 2011-2022 走看看