PDA

View Full Version : گرفتن معدل و نمایش اطلاعات



iran_sky
شنبه 28 آبان 1390, 14:42 عصر
با سلام خدمت دوستان
چطوری میتونم معدل دانشجویان رو حساب کنم و نمایش بدم
(جداولم students,courses,techer,term)
ممنون میشم کمکم کنید

یوسف زالی
شنبه 28 آبان 1390, 15:22 عصر
سلام.
select avg(nomre) from daneshju group by code

iran_sky
شنبه 28 آبان 1390, 17:44 عصر
select avg(nomre) from daneshju group by code
دوست عزیز
من که یک فیلد ندارم
واسه معدل میدونم که میدونی باید نمره درس ضربدر واحد بشه بعدش اعداد بدست امده رو باهم جمع میکنیم و تقسیم بر تعدادش میکنیم
منظورم اینه دوست عزیز
الان این دستورو واسه گرفتن میانگین نوشتم مشکلش کجاست
http://www.pic.iran-forum.ir/images/f3zg8vyq2imems6mm41w.jpg
http://www.pic.iran-forum.ir/images/gz7j0isjoouygb7gr69.jpg
http://www.pic.iran-forum.ir/images/wrtkhpx7jrhizn923meq.jpg
http://www.pic.iran-forum.ir/images/2fsjwbrh4id2tg3gf1.jpg

select students.studentname, courses.dep, courses.unit, avg(unit) as Average
from students ,courses, term
Group by students.studentname, courses.dep, courses.unit

خروجی اینو نمایش میده
http://www.pic.iran-forum.ir/images/yxvq2cstib9up898335a.jpg

یوسف زالی
شنبه 28 آبان 1390, 19:32 عصر
نمی شه که تابع رو رو واحد گذاشتی و بر اساس واحد هم داری گروه می بندی.
گروه رو بر اساس دانشجو بگیرید. اون dep یعنی department?

iran_sky
شنبه 28 آبان 1390, 19:41 عصر
اون dep یعنی department? .
اره
میشه واسم کدشو بنویسی
ممنون میشم

و اینکه چرا داده ها تکرار میشن؟

یوسف زالی
شنبه 28 آبان 1390, 20:15 عصر
شما نمی تونی دپارتمان رو هم داشته باشی.
گروه رو بگذار روی کد دانشجو.
مثلا چیزی مثل این:
select * from TBL join (select ID, sum(nomre) from TBL)X on TBL.ID = X.ID
شما سعی کن نشد هستم.

iran_sky
شنبه 28 آبان 1390, 20:25 عصر
ممنونم دوست عزیز اما من خیلی تو این بحث ضعیفم بشتر از اون حد نمیتونم کار کنم
الانم 4 تا سوال دارم که تو بقیشم موندم
سوالام مثلا اینه:
دستوراتی که مثلا نمره ریاضی دانشجویانی که بالاتر از 17 گرفته اند رو دو واحد افزایش بده
دستوراتی که کلیه مشخصات دانشجویانی که نمره 4 درسشون 20 شده باشه
و دوتا سوالی که تو تالار گذاشتم

sanay_esh
شنبه 28 آبان 1390, 20:40 عصر
از تمامی جداولی که داری و داده هایی که در دیتابیست وارد کردی یه اسکریپت بگیر بذار اینجا تا برات این کار رو انجام بدم

iran_sky
شنبه 28 آبان 1390, 20:50 عصر
78104781057810678103
اینم جداول و کدهای که نوشتم

1) دستوراتی که کلیه اطلاعات دانشجویان که از درس ریاضی 15 گرفته اند
2) معدل کلیه دانشجویان به صورت جداگانه
3) دستوراتی که مثلا نمره ریاضی دانشجویانی که بالاتر از 17 گرفته اند رو دو واحد افزایش بده
4)دستوراتی که کلیه مشخصات دانشجویانی که نمره 4 درسشون 20 شده باشه
ممنون دوست عزیز

(1)select students.studentcode, students.studentname, students.adrs, students.city, courses.coursesname, term.grad
from students, courses, term
where students.studentcode in
(select studentcode from term where grad=15)
(2)
select students.studentname, courses.coursesname, courses.dep, courses.unit,avg(unit*dep)as Average
from students ,courses, term
Groupby students.studentname, courses.dep, courses.unit, courses.coursesname
(3)
select students.studentname, courses.coursesname, courses.dep, term.grad*2 as highgrad
from students, courses, term
where courses.coursescode='1'and term.grad>17
(4)
select studentName
from students
whereexists
(selectcount(*)from term where studentcode=term.studentcode and grad>19
havingcount(*)>'4')

iran_sky
یک شنبه 29 آبان 1390, 11:57 صبح
کسی نیست کمکم کنه

pashna
سه شنبه 01 آذر 1390, 03:18 صبح
-- (1)


SELECT



S.*
FROM



Term AS T

INNERJOIN Student AS S ON T.StudentCode = S.StudentCode

INNERJOIN Courses AS C ON T.CoursesCode = C.CoursesCode
WHERE



T.Grad = 15
-- (2)


WITH



Temp

AS (SELECTSUM(Unit * Grad)/SUM(Unit)AS [AVG]

FROM Term AS T

INNERJOIN Courses AS C ON T.CoursesCode = C.CoursesCode

GROUPBY StudentCode

)

SELECT [AVG] ,
StudentName

FROM Temp AS T

INNERJOIN Student AS S ON S.StudentCode = T.StudentCode
-- (3)


SELECT



StudentName ,
Grad
,




( Grad + 2 )AS NewOne
FROM



Term AS T

INNERJOIN Student AS S ON T.StudentCode = S.StudentCode

INNERJOIN Courses AS C ON T.CoursesCode = C.CoursesCode
WHERE



coursescode = 1

AND Grad >= 17

-- (4)


WITH



TempTable

AS (SELECT Grad ,
StudentCode
,

COUNT(*)

FROM Term

WHERE Grad = 20

GROUPBY Grad ,
StudentCode

HAVINGCOUNT(*)>= 4

)

SELECT S.*

FROM TempTable AS T

INNERJOIN Student AS S ON T.StudentCode = S.StudentCode

sanay_esh
سه شنبه 01 آذر 1390, 08:54 صبح
خدمتت عرض کردم اسکریپت جداولت رو بذار با داده های داخلش که من همه این جداول رو در دیتابیس خودم داشته باشم تا بتونم برات کدی سالم ارسال کنم

script from all tables and data