PDA

View Full Version : AVG دو ستون در یک Select



FatemehB
شنبه 06 آبان 1385, 08:50 صبح
سلام

فرض کنید جدولی با دو ستون b,a حاوی مقادیر عددی (صفر هم جزء آن هست) داریم
برای گرفتن میانگین هر دو ستون به صورت مجزا در یک Select چه جوری باید عمل کرد ؟
به شرطی که مقادیر صفر در میانگین هر ستون اثر داده نشوند.
مثلا داده ها به صورت زیر باشد :

a : 1 , 0 , 1 , 0
b : 0 , 0 , 1 , 1

h_baqery
شنبه 06 آبان 1385, 10:06 صبح
شاید منظورتون این باشه.



select avg(a,b)
from table1
where a<> 0 and b<>0

sarami
شنبه 06 آبان 1385, 14:53 عصر
تابع Avg فقط یک آرگومان ورودی دارد

AminSobati
شنبه 06 آبان 1385, 21:07 عصر
شرط "مخالف با صفر" رو نمیشه در اینجا برای هر دو در یک Query اعمال کرد. این شاید کمکتون کنه:


select
(select avg(a) from table1 where a<>0) as avg1,(select avg(b) from table1 where b<>0)

FatemehB
یک شنبه 07 آبان 1385, 13:02 عصر
با تشکر از همه دوستانی که توجه کردند

راستش این Select ها برای کار من مناسب نیست.
البته آقای ثباتی فرمایش شما صحیح ولی من این Select رو برای یه جا می خوام استفاده کنم که روی یه فیلد دیگه گروه بندی انجام میده

شاید هم راهی نباشه
بهر حال ممنون

AminSobati
یک شنبه 07 آبان 1385, 14:59 عصر
پس شاید صورت مسئله رو کامل مطرح نکردین. چیزی که اینجا پرسیدین جوابش رو نوشتم، ولی ظاهرا نیاز شما متفاوته. اگر جزئیات بیشتری بدین ما هم بهتر میتونیم کمک کنیم

FatemehB
دوشنبه 08 آبان 1385, 09:56 صبح
ببینید فرض کنید یه فیلد دیگه به نام c هم هست که این میانگین ها براساس گروه بندی اون فیلد انجام میشه.
یعنی براساس گروه هایی که c تعیین میکنه میانگین ستون های b,a باید برگردانده بشه البته به شرطی که در این میانگین ها اعداد صفر دخالت داده نشه
اگه می تونستیم میانگین درستی برای این دو ستون در یک Select برگردونیم ، اون وقت میشد این کار رو روی گروهها هم اعمال کرد.
ولی چون Group by روی هر گروه قراره عمل کنه این دستور select کارامد نیست چون یک مقدار میانگین برای تمامی ستون ها برمی گردونه که مدنظر ما نیست