【问题标题】:Return average deposit,withdrawal for last eight weeks in sql server在sql server中返回最近八周的平均存款,取款
【发布时间】:2015-12-28 17:54:42
【问题描述】:

我想编写一个简单的查询,它将返回 MyTable 中的平均存款和投注,但从今天开始的最后八周,并且还以 dd/mm 格式选择该周的第一天

     SELECT 
             [PlayerId],
             SUM(Aggr.DepositAmount)                                                    [Deposits],
             SUM(Aggr.DepositCount)                                                     [DepositCount],
             SUM(Aggr.WithdrawalAmount)                                                 [Withdrawals],                      
             SUM(Aggr.WithdrawalCount)                                                  [WithdrawalCount]
      FROM [WarehouseMgmt].[FactPaymentAgr] Aggr
      WHERE (TimeId BETWEEN @CurrentWeek AND @CurrentWeek7)
      GROUP BY [PlayerId]

然后我会计算平均存款和取款

所以最终的结果我想成为这样的人

Week,Week_in_format_dd/mm,PlayerId,average_depos,average_withdraw

【问题讨论】:

  • 那么问题到底出在哪里?
  • 只需将 SUM() 替换为 AVG()
  • 查看已编辑的问题

标签: sql sql-server


【解决方案1】:

我已更新我的查询以符合您的最后要求

DECLARE @first_date DATETIME

SET @first_date = DATEADD(ww, -8, GETDATE())

SELECT T.week_number,
            T.date_formatted,
            T.playerID,
            AVG(DepositAmount) AS avg_deposit,
            AVG(WithdrawalAmount) AS avg_withdrawal
    FROM
        (SELECT 
                DATEPART(ww, timeID) AS week_number,
                SUBSTRING(CONVERT(VARCHAR, timeID, 103), 1, 5) AS date_formatted,
                PlayerID,
                DepositAmount,
                WithdrawalAmount)
        FROM [WarehouseMgmt].[FactPaymentAgr] Aggr
        WHERE TimeId >= @first_date) AS T
    GROUP BY week_number,
             date_formatted,
             playerID

【讨论】:

  • 我现在不确定语法,但方法准确且出色
猜你喜欢
  • 2018-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
相关资源
最近更新 更多