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
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.