SAS Proc SQL — занимает первое n-е (3-е) место по величине для группы, скажем, университетов и их цены? (HW, если честно)

#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;