Я добавил два новых столбца для определения информации о пополнении счета: я думаю, что у вас есть информация о пополнении счета в другой таблице, если вы можете поместить эту информацию, как я сделал, этот запрос будет работать.
DECLARE @tbl table(
Userid int,
Date datetime,
Balance int,
Voice int,
Data int,
Recharge int,
RechargeSN int
)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(1,'4/5/2018' , 100 , 10 , 15,100,3)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(1,'4/6/2018' , 75 , 5 , 10,0,3)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(1,'4/7/2018' , 60 , 10 , 10,0,3)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(1,'4/8/2018' , 90 , 10 , 20,50,2)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(1,'4/9/2018' , 60 , 10 , 20,0,2)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(1,'4/10/2018' , 50 , 20 , 30,20,1)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(2,'4/1/2018' , 200 , 50 , 40,200,2)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(2,'4/2/2018' , 110 , 20 , 20,0,2)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(2,'4/3/2018' , 70 , 20 , 10,0,2)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(2,'4/4/2018' , 55 , 10 , 40,15,1)
INSERT INTO @tbl( Userid, [Date], Balance, Voice, Data,Recharge,RechargeSN) VALUES(2,'4/5/2018' , 5 , 2 , 2,0,1)
--SELECT * FROM @tbl t
SELECT userid, RechageDate = max(date), Avg_Voice = (cast(SUM(voice) AS numeric) / Count(voice)) , Avg_Data = cast(SUM(Data) AS numeric) / Count(Data) *1.00
--, t.RechargeSN
FROM @tbl t
GROUP BY t.Userid, t.RechargeSN
ORDER BY t.Userid