SQL Group By в SAS - альтернатива?

rsubmit;
proc sql;
create table wpffasdekpr2 as
select polnum, ordnnr, brkd, fsnr, fvpkd, mnr, mlopnr,coverfrom, coverto, nationalkey, exposuretype, COActivityCode, sum(COSumInsured) as SumIns, sum(AnnualBaseAmt) as SumAmt from wpffasdekpr
group by 
polnum, ordnnr, brkd, fsnr, fvpkd, mnr, mlopnr,coverfrom, coverto, nationalkey, exposuretype, COActivityCode;
quit;
endrsubmit;

Таблица, с которой это работает, выглядит следующим образом:

введите здесь описание изображения

Я ожидал, что первые 4 строки будут сжаты в одну с помощью этого оператора, а две самые правые переменные суммируются. Тем не менее, заявление не имеет никакого эффекта. Выходная таблица похожа на входную. Два вопроса: 1. Почему это? в обычном sql я уверен, что это сработает. 2. Как я могу добиться ожидаемого результата?

Журнал:

508  rsubmit;
NOTE: Remote submit to SESKUX01 commencing.
1391  proc sql;
1392  create table wpffasdekpr2 as
1393  select polnum, ordnnr, brkd, fsnr, fvpkd, mnr, mlopnr,coverfrom, coverto, nationalkey, exposuretype, COActivityCode, sum(COSumInsured) as COsumInsured2, sum(AnnualBaseAmt) as AnnualBaseAmt2
1393! from wpffasdekpr
1394  group by
1395  polnum, ordnnr, brkd, fsnr, fvpkd, mnr, mlopnr,coverfrom, coverto, nationalkey, exposuretype, COActivityCode;
NOTE: Compressing data set WORK.WPFFASDEKPR2 increased size by 5.17 percent.
      Compressed is 29614 pages; un-compressed would require 28159 pages.
NOTE: Table WORK.WPFFASDEKPR2 created, with 28778049 rows and 14 columns.

1396  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           1:54.66
      cpu time            1:41.68


NOTE: Remote submit to SESKUX01 complete.

person DavveK    schedule 13.02.2014    source источник
comment
При использовании rsubmit и endrsubmit кажется, что вы отправляете свой запрос на удаленный сервер SAS - как проверяется выходной набор данных wpffasdekpr2? Вы загружаете в свой локальный сеанс SAS, используя PROC DOWNLOAD? возможно ли, что вы на самом деле видите устаревшую копию wpffasdekpr2? Группа SQL в SAS будет работать почти так же, как и в любой другой БД, за исключением пары особенностей? оставим их на какое-то другое время.   -  person    schedule 13.02.2014
comment
Если вы можете опубликовать журнал, это будет полезно.   -  person    schedule 13.02.2014
comment
Я уверен, что это не устарело, поскольку таблицы не существовало до запроса. Просмотр его с помощью встроенного средства просмотра в SAS.   -  person DavveK    schedule 13.02.2014
comment
Похоже, что nationalkey представляет собой составной ключ, состоящий из (насколько я могу судить по изображению) {polnum, ORDNNR, FSNR, BRKD, FVPKD, MNR, MLOPNR, EXPOSURETYPE } Возможно ли, что в nationalkey все еще есть что-то скрытое. Можете ли вы попробовать выполнить тот же запрос, но исключить nationalkey из SELECT и group by и посмотреть, заметите ли вы уменьшение числа нет. строк в wpffasdekpr2. Я предполагаю, что nationalkey - это какой-то первичный ключ.   -  person    schedule 13.02.2014


Ответы (1)


Являются ли CoverFrom и CoverTo значениями времени или даты? Если время, то они могут не совпадать. Возможно, стоит проверить, применяются ли какие-либо форматы к другим переменным в исходном наборе данных, поскольку группировка по операциям будет работать с базовыми значениями (а не с отформатированными/отображаемыми результатами).

В противном случае я бы рекомендовал повторно выполнить ваш запрос, используя одну группу за раз. Кроме того, использование следующего синтаксиса (группировка по нумерации) позволяет избежать непреднамеренных ошибок:

 proc sql;
 create table wpffasdekpr2 as
    select polnum, ordnnr, brkd, fsnr, fvpkd, mnr, mlopnr,coverfrom, coverto
       ,nationalkey, exposuretype, COActivityCode
       ,sum(COSumInsured) as SumIns, sum(AnnualBaseAmt) as SumAmt 
    from wpffasdekpr
    group by 1,2,3,4,5,6,7,8,9,10,11,12;
person Allan Bowe    schedule 13.02.2014
comment
Благодарю вас! Я не понял, что группа работает на основе, а не в формате. Обложка/обложка отформатированы числами (ГГММДД10.), также форматированы тип воздействия и COActivityCOde ($10). Я попробую нумерованный синтаксис. - person DavveK; 13.02.2014
comment
хм - ГГММДД10. - это формат даты (а не времени), так что это не может быть проблемой. Имеет ли COActivityCode LENGTH больше 10 долларов? Если так, то может быть.. - person Allan Bowe; 13.02.2014