PDA

View Full Version : میانگین از موجودی حساب بانکی



karimm
پنج شنبه 24 خرداد 1386, 03:39 صبح
سوال من اینه که در روزهای مختلفی شخص از حسابش پول برداشت می کنه یا به حساب می ریزه حالا چطور میشه معدل موجودی 6 ماه رو حساب کرد.(میانگین وزنی)

supporter
پنج شنبه 24 خرداد 1386, 19:00 عصر
ساختار چدولتون چه طوریه ؟ مثلا حالت‌های واریز یا برداشت را چه طوری (با Flage یا منفی و مثبت بودن مبلغ و یا ...) مشخص می‌کنید؟

titbasoft
پنج شنبه 24 خرداد 1386, 19:15 عصر
فرض کنید چنین جدولی داریم:


create table Trans
(
TID int primary key,
TDate datetime,
balance int
)

insert into Trans values(1,'1.1.2007 12:12',20)
insert into Trans values(2,'1.1.2007 13:15',10)
insert into Trans values(3,'1.20.2007',30)
insert into Trans values(4,'1.23.2007',40)
insert into Trans values(5,'2.15.2007',50)


یک view می سازیم که آخرین موجودی هر روز رو به ما بده:

Create View MTrans as
select T.* from Trans T join (
select max(Tdate) d from Trans group by DATEPART(year, Tdate),DATEPART(month, Tdate),DATEPART(day, Tdate)
) as mT on T.Tdate=mT.d

سپس با کد زیر متوسط وزنی رو بدست میاریم:

select sum(balance*w)/sum(w) from
(
Select
m1.TID,
m1.balance,
DATEDIFF(day,m1.Tdate , min(m2.Tdate)) w
from Mtrans m1 join Mtrans m2 on m1.Tdate<m2.Tdate
Group by m1.TID,m1.Tdate,m1.balance
)
as x
حتما اوپتیمایز تر هم میشه، فقط برای ایده دادن این رو نوشتم