【问题标题】:Need to SUM the column values upto same rowno需要将列值求和到相同的 rowno
【发布时间】:2017-01-11 06:14:59
【问题描述】:

我有一个场景,我将显示列值与特定行值的总和。我从小计中给出 A、B 和 C 类。如果小计hvs 80,我会给A,从81-90 B和91-100,设置为100

例如

Class   totalstudent     subtotal        category 
1        20                20             A
2        30                50             A
3        15                65             A
4        20                85             B
5        10                95             C
6         5                100            C

如何在上述场景中显示小计。需要在 SQL 中编写 fetch 查询。

【问题讨论】:

  • 您使用的是哪个 DBMS?后格雷斯?甲骨文?

标签: sql select sum subtotal rowsum


【解决方案1】:

你需要执行running total操作

选择 * 进入 #t 从(选择1个班级,20名学生 联合所有 选择 2,30 联合所有 选择 3,15 联合所有 选择 4,20 联合所有 选择 5,10 联合所有 选择 6,5 ) x

SELECT 班级、学生总数、小计、 CASE WHEN 小计 )X 按类别排序

【讨论】:

    【解决方案2】:
    USE CTE and get your desired result :
    
    
    CREATE TABLE #Table(Class INT, totalstudent INT,category    
    VARCHAR(10))
    
    INSERT INTO #Table(Class , totalstudent ,category )
    SELECT 1,20,'A' UNION ALL
    SELECT 2,30,'A' UNION ALL
    SELECT 3,15,'A' UNION ALL
    SELECT 4,20,'B' UNION ALL
    SELECT 5,10,'C' UNION ALL
    SELECT 6,5,'C' 
    
    ;WITH CTE ( _Class , _totalstudent , _subtotal , _category) AS
    (
       SELECT Class , totalstudent ,totalstudent ,category
       FROM #Table WHERE Class = 1
       UNION ALL
       SELECT Class , totalstudent , totalstudent + _subtotal  ,category
       FROM #Table
       JOIN CTE ON Class = _Class  + 1
    )
    
    SELECT * FROM CTE
    

    【讨论】:

      【解决方案3】:

      检查一下。

              SELECT Class,totalstudent, 
              SUM(totalstudent)over(order by Class) as subtotal,
              Case When SUM(totalstudent)over(order by Class) <= 65 then 'A'  
              When SUM(totalstudent)over(order by Class) < 86 then 'B'  
              When SUM(totalstudent)over(order by Class) > 85 then 'C'  end As category  
              FROM #Table
              group by Class,totalstudent
              order by Class
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 1970-01-01
        相关资源
        最近更新 更多