SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.05.2008 22:09:48

Predator
Участник
Зарегистрирован: 21.05.2008
Сообщений: 23

помогите написать процедуру

необходимо создать процедуру: в ней необходимо вычеслить количество заключенных договоров у каждого работника. среднее количество договоров на человека. если работник заключил договоров больше среднего выдать премию в количестве 10%. вывести на экран таблицу с атрибутами: фамилия работника, zp, premiya. k_vidache.

CREATE TABLE Orders (orderid int unsigned not null auto_increment primary key, customerid int unsigned not null, date date not null,
ocenkaid int unsigned not null, days int unsigned not null, itogo int unsigned, workerid int unsigned);

здесь выводится фамилия и з.п.:
create temporary table tz SELECT lastname, sum(itogo)*przp as total_zp FROM Orders NATURAL JOIN Workers WHERE MONTH(`DATE`)=5 GROUP BY workerid;
select * from tz;

CREATE TABLE Workers   (workerid int unsigned not null auto_increment primary key, lastname varchar(25), name varchar(15), otchestvo varchar (25),
przp float (3,2));

Неактивен

 

#2 21.05.2008 23:09:46

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите написать процедуру

А зачем Вам процедура?


SELECT lastname, sum(itogo)*przp as zp,
if(count(*)>av,sum(itogo)*przp*0.1,0) as premiya,
if(count(*)>av,sum(itogo)*przp*1.1,sum(itogo)*przp) as k_vidache
FROM Orders NATURAL JOIN Workers JOIN
(SELECT count(*)/count(distinct workerid) as av
FROM Orders) vs
WHERE MONTH(`DATE`)=5
GROUP BY workerid;

Неактивен

 

#3 22.05.2008 09:09:52

Predator
Участник
Зарегистрирован: 21.05.2008
Сообщений: 23

Re: помогите написать процедуру

обязательно нужно сделать в процедуру. это курсовик! задание такое

Неактивен

 

#4 22.05.2008 14:27:20

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: помогите написать процедуру

DELIMITER $$
CREATE PROCEDURE cursovik()
BEGIN
-- сюда просто вставляете запрос, который написал выше vasya
END $$
DELIMITER $$


Вообще если Вам нужно разобраться, посмотрите еще, например, тему
http://sqlinfo.ru/forum/viewtopic.php?pid=3813#p3813 - оттуда понятнее будет, что из себя представляют процедуры в MySQL

Неактивен

 

#5 22.05.2008 14:39:47

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите написать процедуру

Ну так у Вас простейшая процедура получается - включает всего один запрос.


delimiter $$
CREATE PROCEDURE cursovik()
BEGIN
-- здесь нужный вам запрос, приведенный выше.
END;
$$
 


P.S. А где это такие курсовики требуют?

Неактивен

 

#6 22.05.2008 18:20:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите написать процедуру

Преимя выдается, если у работника договоров больше среднего. Проверте, может быть в Ваших данных у всех работников одинаковое кол-во договоров?

Неактивен

 

#7 22.05.2008 19:15:51

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: помогите написать процедуру

А такой запрос?


SELECT lastname, sum(itogo)*przp AS zp,
IF(count(*)>av,sum(itogo)*przp*0.1,0) AS premiya,
IF(count(*)>av,sum(itogo)*przp*1.1,sum(itogo)*przp) AS k_vidache
FROM Orders NATURAL JOIN Workers JOIN
(SELECT count(*)/count(DISTINCT workerid) AS av FROM Orders WHERE MONTH(`DATE`)=5) vs
WHERE MONTH(`DATE`)=5
GROUP BY workerid;

Неактивен

 

#8 22.05.2008 19:20:28

Predator
Участник
Зарегистрирован: 21.05.2008
Сообщений: 23

Re: помогите написать процедуру

ммм. посчитал только у тех, у кого заказов 5, а у кого 3, опять ноль!

Неактивен

 

#9 22.05.2008 19:23:07

Predator
Участник
Зарегистрирован: 21.05.2008
Сообщений: 23

Re: помогите написать процедуру

ойю минутку

Неактивен

 

#10 22.05.2008 19:34:42

Predator
Участник
Зарегистрирован: 21.05.2008
Сообщений: 23

Re: помогите написать процедуру

АТЛИЧНА
СПС

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson