گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

گروه کاربران لینوکس دانشگاه شهید مدنی آذربایجان

لاگ دانشگاه آذربایجان :: Azarbaijan University Linux User Group

پاسخ سوالات میان ترم - آزمایشگاه پایگاه داده

پایگاه داده pubs:

1- کدی بنویسید که چک کند  کدام انتشارات بیشترین تعداد کتاب را برای شرکت پابز چاپ کرده است؟ و سپس  نام انتشاراتی و همچنین نام کتاب های چاپ شده اش را نمایش بدهد
برای حل سوال در صورت نیاز میتوانید جدول کمکی ایجاد نمایید


2-کدی بنویسید که  چک کند اگر بیش از یک چهارم از کل فروش، توسط یک فروشگاه ثبت شده بود، نام آن فروشگاه را بعنوان فروشگاه برتر چاپ کند.

برای حل سوال در صورت نیاز میتوانید جدول کمکی ایجاد نمایید


•    در صورت لزوم میتوانید از Help برنامه استفاده نمایید!
-----------------------------

پاسخ ها:

1-

use pubs
declare @m int

select @m=MAX(maxorder.cnt) from ( select pub_id,count(*) as cnt from titles group by pub_id) maxorder

select titles.pub_id,pub_name,count(*) as cnt from publishers join titles on titles.pub_id=publishers.pub_id group by titles.pub_id,pub_name having COUNT(*)=@m

------------------
2-
use pubs
go
create table orderssum (id char(4) not null,name varchar(40),sumqty smallint );
go
insert into orderssum
select sales.stor_id,stores.stor_name,SUM(qty)
from stores,sales
where stores.stor_id=sales.stor_id
group by sales.stor_id,stores.stor_name;
go
declare @x float , @y smallint, @z float
set @x=(select SUM(qty) from sales)
set @z=@x/4
set @y=(select MAX(sumqty) from orderssum)
if @y > @z
select name from orderssum where sumqty in (select MAX(sumqty) from orderssum)


------------------------------------------------

پایگاه داده Northwind


1 - کدی بنویسید که  چک کند اگر سفارشات ثبت شده توسط یک کارمند، از میانگین تعداد سفارشات ثبت شده توسط همه کارمندان
 بیش تر بود، آنگاه  نام و آی دی آن کارمند و همچنین تعداد سفارشات ثبت شده توسط آن کارمند را نمایش بدهد.
. (برای ساده تر شدن کد، میتوانید فقط اولین کارمند با مشخصات مذکوررا بیابید.)

2- کدی بنویسید که  چک کند بیشترین سفارش توسط کدام مشتری ثبت شده است و نام این مشتری را در خروجی بعنوان مشتری نمونه چاپ نماید

در صورت لزوم میتوانید از راهنمای برنامه استفاده نمایید

---------------------

پاسخ ها:


1-
use northwind
declare @avg int
        select @avg = SUM(g.cnt)/COUNT(*)
        from   (  select EmployeeID , COUNT(*) as cnt from Orders    group by EmployeeID   )  g


select @avg as average


select Orders.EmployeeId, Employees.FirstName, Count(*) as AllOrder
from Orders
inner join
Employees on Orders.EmployeeID = Employees.EmployeeID
group by Orders.EmployeeId,Employees.FirstName
having Count(*) > @avg

-----------------
2-
use northwind
declare @max int

        select @max = max(g.cnt)    from
        (select CustomerID , COUNT(*) as cnt from   Orders    group by CustomerID  )  g
        select @max  as max_order

select Orders.CustomerID, customers.CompanyName, COUNT(*)
from Orders
inner join
Customers on Orders.CustomerID = Customers.customerid
group by Orders.CustomerID,Customers.CompanyName
having Count(*) = @max