【问题标题】:how to get sum(col2) as somename,(col2*col3)/Sum(col2) as somename1 for the some date如何获取 sum(col2) as somename,(col2*col3)/Sum(col2) as somename1 for some date
【发布时间】:2015-05-15 17:16:42
【问题描述】:

我的专栏:

col1    col2    col3    date
a         11    0    3/6/2015:0:00:00
b          5    4    3/6/2015:0:00:00
c          5    5    3/6/2015:0:00:00
d          3    0    3/6/2015:0:00:00
e         21    21   3/6/2015:0:00:00

需要 O/P:

col2(sum)   col2*col3/sum(col2)      date
   45               11              3/6/2015 0:00

【问题讨论】:

  • 达到这个解决方案的确切问题是什么?如果有不同的日期,您想选择哪个日期?我认为一些附带的文字不会影响更好地理解您的问题..

标签: sql sql-server sql-server-2008


【解决方案1】:

你可以像下面这样实现你所追求的:

CREATE TABLE SampleTable
    ([col1] varchar(1), [col2] int, [col3] int, [date] varchar(16))
;

INSERT INTO SampleTable
    ([col1], [col2], [col3], [date])
VALUES
    ('a', 11, 0, '3/6/2015:0:00:00'),
    ('b', 5, 4, '3/6/2015:0:00:00'),
    ('c', 5, 5, '3/6/2015:0:00:00'),
    ('d', 3, 0, '3/6/2015:0:00:00'),
    ('e', 21, 21, '3/6/2015:0:00:00')
;

SELECT t2.SumCol2, 
       sum(t1.col2 * t1.col3) / (t2.SumCol2 * 1.0) AS CalculatedColumn, 
       t1.[date] AS [Date]
FROM SampleTable t1
INNER JOIN (
    SELECT SUM(col2) AS SumCol2, [Date] 
    FROM SampleTable 
    GROUP BY [date]) AS t2 ON t1.[date] = t2.[date]
GROUP BY t2.SumCol2, t1.[date]

但是,由于舍入问题,这会产生与您的输出不匹配的输出:

SumCol2  CalculatedColumn   Date
--------------------------------------------
45       10.80              3/6/2015:0:00:00

但是看看你的数字,我认为我的输出是正确的:

11 * 0   = 0
5  * 4   = 20
5  * 5   = 25 
3  * 0   = 0 
21 * 21  = 441
==================
45       / 486   =  10.8

【讨论】:

    【解决方案2】:

    我假设您想获得日期的总和和 ang

    SELECT sum(col2) AS sum
        ,CASE 
            WHEN sum(col2 * col3) = 0
                THEN 0
            ELSE sum(col2 * col3) / sum(col2) AS avg
                ,DATE GROUP BY DATE
    

    【讨论】:

      猜你喜欢
      • 2018-10-13
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多