Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Нужна помощь с запросом!!! help!help!help!  [new]
janjam
Member

Откуда:
Сообщений: 2
Ребята, у меня проблемма! Нужно создать запрос (хранимую процедуру или функцию)
есть таблица Go_to_university, в которой хранятся id выпускников школы и куда они поступили, тоесть вид такой:
id.выпускника уч.заведение контракт/бюджет
1 1 бюджет
2 2 контракт
3 3 контракт


нужно выводить процент выпускников, которые поступили на бюджет...

пробовала делать так:
[src]CREATE FUNCTION MyQuery10
(	
)
RETURNS varchar(10)
AS
begin

	DECLARE @procent float;
	DECLARE @countAll float;
	DECLARE @count float;
			
	select @count = COUNT(*)
	from Go_to_university
	where Бюджет_контракт = 'Бюджет'
	
	select @countAll = COUNT(*)
	from Go_to_university
	
	select @procent=@count/@countAll
    return (@procent as varchar(10))+'%'

end
GO
[/SRC]

пишет ошибку в
return (@procent as varchar(10))+'%'
22 окт 12, 04:22    [13354228]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом!!! help!help!help!  [new]
tetxx
Member

Откуда:
Сообщений: 297
А так?
create function MyQuery10(@type as nvarchar(20))
returns table
as return (
  select (select cast(count(*) as numeric(15,3)) from Go_to_university where type = @type)
	/ nullif((select COUNT(*) from Go_to_university),0)
	as percent_of_type
)
22 окт 12, 05:42    [13354237]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом!!! help!help!help!  [new]
aleks2
Guest
janjam
пишет ошибку в
return (@procent as varchar(10))+'%'


return cast(@procent as varchar(10))+'%'
22 окт 12, 06:36    [13354252]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом!!! help!help!help!  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
aleks2
janjam
пишет ошибку в
return (@procent as varchar(10))+'%'


return cast(@procent as varchar(10))+'%'

а еще
select @procent=@count/@countAll*100

раз уж проценты считаете.
22 окт 12, 13:09    [13356094]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом!!! help!help!help!  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
tetxx
А так?
create function MyQuery10(@type as nvarchar(20))
returns table
as return (
  select (select cast(count(*) as numeric(15,3)) from Go_to_university where type = @type)
	/ nullif((select COUNT(*) from Go_to_university),0)
	as percent_of_type
)

Если версия сервера 2005 или выше, то можно еще так:

create function MyQuery10(@type as nvarchar(20)) 
RETURNS varchar(10)
return (select cast(floor([percent]) as varchar(9)) + '%'
            from (select type, 100.00 * COUNT(*) over (partition by type)/COUNT(*) over () as [percent] 
                      from Go_to_university) as tbl
          where type = 'Бюджет')
22 окт 12, 13:47    [13356402]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с запросом!!! help!help!help!  [new]
janjam
Member

Откуда:
Сообщений: 2
сделала так

set @count_b = (
	SELECT count(Go_to_university.Бюджет_контракт) 
	From Go_to_university 
	where Go_to_university.Бюджет_контракт = 'Бюджет'and Go_to_university.Год_поступления = @year)
set @count_all = (
	select count(Go_to_university.Бюджет_контракт)
	from Go_to_university)
set @procent = (
	(cast(@count_b as float) / cast(@count_all as float)) * 100)
select @procent as 'Процент_бюджетников'
28 окт 12, 13:32    [13386883]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить