#sql #sas #proc-sql #ranking-functions
#sql #sas #proc-sql #ранжирование-функции
Вопрос:
(это домашнее задание, не буду врать)
У меня есть запрос ANSI SQL, который я написал
это дает требуемые 3-е самые высокие цены правильно,
образец таблицы
select unique uni, price
from
(
(
select unique uni, price
from
(
select unique uni, price
from table1
group by uni
having price < max(price)
)
group by uni
having price < max(price)
)
group by uni
having price < max(price)
)
теперь мне нужно перечислить 1-й, 2-й и 3-й в одну таблицу, но make таков, что его можно использовать n-й раз.
example:
Col1 Col2
uni1 10
uni1 20
uni2 20
uni2 10
uni3 30
uni3 20
uni1 30
/ извините за форматирование, я не был здесь очень долго, я ценю любую помощь, я предоставлю ссылку на университет, о котором я спросил у преподавателя, могу ли я это сделать, он сказал «да», но не весь код, что-то вроде 10%, но в любом случае./
Комментарии:
1. Вы должны (по крайней мере) ввести запрос в виде текста в вопросе, а не изображения. Данные также лучше в виде текстовых таблиц.
2. @GordonLinoff спасибо, я исправлю это сейчас
3. @GordonLinoff привет, могу я спросить вас, как мне нарисовать таблицу здесь. Я получил смешанные результаты при поиске в Google.
4. Способ предоставления данных для сообщений SAS — это отдельный этап обработки данных со встроенными данными, чтобы пользователи могли копировать и вставлять в сеанс SAS для воспроизведения ваших данных примера.
Ответ №1:
В SAS вы можете использовать проприетарную опцию OUTOBS
, чтобы ограничить количество строк результирующего набора. вывод.
Пример:
Используется OUTOBS=3
для создания таблицы top 3. Затем используйте эту таблицу в последующем запросе.
data have;
input x @@; datalines;
10 9 8 7 6 5 4 3 2 1 0
;
proc sql;
reset outobs=3;
create table top3x as
select * from have
order by x descending;
reset outobs=max;
* another query;
quit;