<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Proc Sql Question in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37112#M7333</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have a sql query written by a previous programmer -&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CREATE TABLE WORK.BASE_PGM AS SELECT&amp;nbsp; DISTINCT&lt;BR /&gt;(COUNT (DISTINCT MEMBER_KEY_CHAR )) AS DEMO_PARTICIPATING_USERS&lt;BR /&gt;,PRCHSR_CD AS DEMO_PRCHSR_CODE&lt;BR /&gt;,CASE WHEN GDR IS NOT MISSING THEN GDR&lt;BR /&gt;ELSE 'UNKNOWN' END AS DEMO_GDR_GROUPING&lt;BR /&gt;,CASE WHEN ETHNICITY IS NOT MISSING THEN ETHNICITY&lt;BR /&gt;ELSE 'UNKNOWN' END AS DEMO_ETHN_GROUPING&lt;BR /&gt;,((TODAY()-DATEPART(DOB_DT))/365.25) AS &lt;SPAN style="color: #ff0000;"&gt;DEMO_AGE&lt;/SPAN&gt;&lt;BR /&gt;,CASE WHEN &lt;SPAN style="color: #ff0000;"&gt;CALCULATED DEMO_AGE &lt;/SPAN&gt;BETWEEN 18 AND 34.99 THEN '18 - 34' &lt;BR /&gt;WHEN CALCULATED DEMO_AGE BETWEEN 35 AND 44.99 THEN '35 - 44'&lt;BR /&gt;WHEN CALCULATED DEMO_AGE BETWEEN 45 AND 54.99 THEN '45 - 55'&lt;BR /&gt;WHEN CALCULATED DEMO_AGE &amp;gt;= 55 AND 44.99 THEN 'OVER 55'&lt;BR /&gt;ELSE 'UNKNOWN' END AS DEMO_AGE_GROUPING&amp;nbsp; &lt;BR /&gt;,PGM_NM AS PGM_NM&lt;BR /&gt;,OPPORTUNITY_COMPLETED AS DETAIL_OPPORTUNITY_COMPLETED&lt;BR /&gt;,ACTION_ITEM_RESPONSE_COMPLETED AS DETAIL_ACTION_ITEM_COMPLETED&lt;BR /&gt;FROM F_MEMBER_PROGRAM_BASE_PGM AS F_MEMBER_PROGRAM_BASE&lt;BR /&gt;WHERE F_MEMBER_PROGRAM_BASE.PROGRAM_ENROLLED &amp;gt; 0&lt;BR /&gt;GROUP BY PRCHSR_CD,DOB_DT,GDR;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does anyone know if there could be performance issues with calculating the age and using it again in a case statement? The report is taking excess time and my hunch is this query is taking more time than necessary.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any thoughts/feedback will be helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;saspert.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 26 Jul 2011 20:48:20 GMT</pubDate>
    <dc:creator>saspert</dc:creator>
    <dc:date>2011-07-26T20:48:20Z</dc:date>
    <item>
      <title>Proc Sql Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37112#M7333</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have a sql query written by a previous programmer -&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CREATE TABLE WORK.BASE_PGM AS SELECT&amp;nbsp; DISTINCT&lt;BR /&gt;(COUNT (DISTINCT MEMBER_KEY_CHAR )) AS DEMO_PARTICIPATING_USERS&lt;BR /&gt;,PRCHSR_CD AS DEMO_PRCHSR_CODE&lt;BR /&gt;,CASE WHEN GDR IS NOT MISSING THEN GDR&lt;BR /&gt;ELSE 'UNKNOWN' END AS DEMO_GDR_GROUPING&lt;BR /&gt;,CASE WHEN ETHNICITY IS NOT MISSING THEN ETHNICITY&lt;BR /&gt;ELSE 'UNKNOWN' END AS DEMO_ETHN_GROUPING&lt;BR /&gt;,((TODAY()-DATEPART(DOB_DT))/365.25) AS &lt;SPAN style="color: #ff0000;"&gt;DEMO_AGE&lt;/SPAN&gt;&lt;BR /&gt;,CASE WHEN &lt;SPAN style="color: #ff0000;"&gt;CALCULATED DEMO_AGE &lt;/SPAN&gt;BETWEEN 18 AND 34.99 THEN '18 - 34' &lt;BR /&gt;WHEN CALCULATED DEMO_AGE BETWEEN 35 AND 44.99 THEN '35 - 44'&lt;BR /&gt;WHEN CALCULATED DEMO_AGE BETWEEN 45 AND 54.99 THEN '45 - 55'&lt;BR /&gt;WHEN CALCULATED DEMO_AGE &amp;gt;= 55 AND 44.99 THEN 'OVER 55'&lt;BR /&gt;ELSE 'UNKNOWN' END AS DEMO_AGE_GROUPING&amp;nbsp; &lt;BR /&gt;,PGM_NM AS PGM_NM&lt;BR /&gt;,OPPORTUNITY_COMPLETED AS DETAIL_OPPORTUNITY_COMPLETED&lt;BR /&gt;,ACTION_ITEM_RESPONSE_COMPLETED AS DETAIL_ACTION_ITEM_COMPLETED&lt;BR /&gt;FROM F_MEMBER_PROGRAM_BASE_PGM AS F_MEMBER_PROGRAM_BASE&lt;BR /&gt;WHERE F_MEMBER_PROGRAM_BASE.PROGRAM_ENROLLED &amp;gt; 0&lt;BR /&gt;GROUP BY PRCHSR_CD,DOB_DT,GDR;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does anyone know if there could be performance issues with calculating the age and using it again in a case statement? The report is taking excess time and my hunch is this query is taking more time than necessary.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any thoughts/feedback will be helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;saspert.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Jul 2011 20:48:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37112#M7333</guid>
      <dc:creator>saspert</dc:creator>
      <dc:date>2011-07-26T20:48:20Z</dc:date>
    </item>
    <item>
      <title>Proc Sql Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37113#M7334</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I wouldn't think so, but your only other option would be to create and apply a format to the calculated demo_age.&amp;nbsp; You could always extract a few records and compare the two methods.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would think that your excessive time is due to something else.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Jul 2011 21:08:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37113#M7334</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-07-26T21:08:02Z</dc:date>
    </item>
    <item>
      <title>Proc Sql Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37114#M7335</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There are so many factors that influence how a SQL proc or datastep runs that I find the quickest way to test it is try and see which affects the running time by commenting out parts and comparing the differences. &lt;/P&gt;&lt;P&gt;This isn't 100% by far, but it works pretty well. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Another possibility is the two distinct options in the code, they have to require a sort of some kind on the back end...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Jul 2011 22:06:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37114#M7335</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2011-07-26T22:06:53Z</dc:date>
    </item>
    <item>
      <title>Proc Sql Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37115#M7336</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;FWIW, I ran a VERY unscientific test and discovered that the way it was written was faster.&amp;nbsp; However, in doing that, I noticed a couple of probable errors in your inherited code that you might want to fix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WHEN CALCULATED DEMO_AGE BETWEEN 45 AND 54.99 THEN '45 - 55'&lt;/P&gt;&lt;P&gt;WHEN CALCULATED DEMO_AGE &amp;gt;= 55 AND 44.99 THEN 'OVER 55'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the first of those lines, I would think that should be '45 - 54'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the second of those line, the AND 44.99 doesn't make any sense and the resulting value should be 'OVER 54'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anyhow, the code I ran was as follows:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data F_MEMBER_PROGRAM_BASE_PGM;&lt;/P&gt;&lt;P&gt;&amp;nbsp; informat dob_dt anydtdtm21.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input (PRCHSR_CD GDR) ($) DOB_DT;&lt;/P&gt;&lt;P&gt;&amp;nbsp; member_key_char=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PRCHSR_CD=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ETHNICITY="1";&lt;/P&gt;&lt;P&gt;&amp;nbsp; PGM_NM=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PROGRAM_ENROLLED=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; OPPORTUNITY_COMPLETED=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ACTION_ITEM_RESPONSE_COMPLETED=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i=1 to 10000;output;end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cards;&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 1 2/20/1970:12:10:00&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1 1 2/20/1970:12:10:00&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2 2 2/20/1960:12:10:00&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2 2 2/20/1960:12:10:00&lt;/P&gt;&lt;P&gt;&amp;nbsp; 3 3 2/20/1949:12:10:00&lt;/P&gt;&lt;P&gt;&amp;nbsp; 3 3 2/20/1949:12:10:00&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;/P&gt;&lt;P&gt;CREATE TABLE WORK.BASE_PGM AS SELECT&amp;nbsp; DISTINCT&lt;/P&gt;&lt;P&gt;(COUNT (DISTINCT MEMBER_KEY_CHAR )) AS DEMO_PARTICIPATING_USERS&lt;/P&gt;&lt;P&gt;,PRCHSR_CD AS DEMO_PRCHSR_CODE&lt;/P&gt;&lt;P&gt;,CASE WHEN GDR IS NOT MISSING THEN GDR&lt;/P&gt;&lt;P&gt;ELSE 'UNKNOWN' END AS DEMO_GDR_GROUPING&lt;/P&gt;&lt;P&gt;,CASE WHEN ETHNICITY IS NOT MISSING THEN ETHNICITY&lt;/P&gt;&lt;P&gt;ELSE 'UNKNOWN' END AS DEMO_ETHN_GROUPING&lt;/P&gt;&lt;P&gt;,((TODAY()-DATEPART(DOB_DT))/365.25) AS DEMO_AGE&lt;/P&gt;&lt;P&gt;,CASE WHEN CALCULATED DEMO_AGE BETWEEN 18 AND 34.99 THEN '18 - 34' &lt;/P&gt;&lt;P&gt;WHEN CALCULATED DEMO_AGE BETWEEN 35 AND 44.99 THEN '35 - 44'&lt;/P&gt;&lt;P&gt;WHEN CALCULATED DEMO_AGE BETWEEN 45 AND 54.99 THEN '45 - 55'&lt;/P&gt;&lt;P&gt;WHEN CALCULATED DEMO_AGE &amp;gt;= 55 THEN 'OVER 55'&lt;/P&gt;&lt;P&gt;ELSE 'UNKNOWN' END AS DEMO_AGE_GROUPING&amp;nbsp; &lt;/P&gt;&lt;P&gt;,PGM_NM AS PGM_NM&lt;/P&gt;&lt;P&gt;,OPPORTUNITY_COMPLETED AS DETAIL_OPPORTUNITY_COMPLETED&lt;/P&gt;&lt;P&gt;,ACTION_ITEM_RESPONSE_COMPLETED AS DETAIL_ACTION_ITEM_COMPLETED&lt;/P&gt;&lt;P&gt;FROM F_MEMBER_PROGRAM_BASE_PGM AS F_MEMBER_PROGRAM_BASE&lt;/P&gt;&lt;P&gt;WHERE F_MEMBER_PROGRAM_BASE.PROGRAM_ENROLLED &amp;gt; 0&lt;/P&gt;&lt;P&gt;GROUP BY PRCHSR_CD,DOB_DT,GDR;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;proc format;&lt;/P&gt;&lt;P&gt;&amp;nbsp; value agegrp&lt;/P&gt;&lt;P&gt;&amp;nbsp; 18-34.99="18 - 34"&lt;/P&gt;&lt;P&gt;&amp;nbsp; 35-44.99="35 - 44"&lt;/P&gt;&lt;P&gt;&amp;nbsp; 45-54.99="18 - 55"&lt;/P&gt;&lt;P&gt;&amp;nbsp; other="OVER 55";&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;/P&gt;&lt;P&gt;CREATE TABLE WORK.BASE_PGM AS SELECT&amp;nbsp; DISTINCT&lt;/P&gt;&lt;P&gt;(COUNT (DISTINCT MEMBER_KEY_CHAR )) AS DEMO_PARTICIPATING_USERS&lt;/P&gt;&lt;P&gt;,PRCHSR_CD AS DEMO_PRCHSR_CODE&lt;/P&gt;&lt;P&gt;,CASE WHEN GDR IS NOT MISSING THEN GDR&lt;/P&gt;&lt;P&gt;ELSE 'UNKNOWN' END AS DEMO_GDR_GROUPING&lt;/P&gt;&lt;P&gt;,CASE WHEN ETHNICITY IS NOT MISSING THEN ETHNICITY&lt;/P&gt;&lt;P&gt;ELSE 'UNKNOWN' END AS DEMO_ETHN_GROUPING&lt;/P&gt;&lt;P&gt;,((TODAY()-DATEPART(DOB_DT))/365.25) AS DEMO_AGE&lt;/P&gt;&lt;P&gt;,put(((TODAY()-DATEPART(DOB_DT))/365.25),agegrp.) AS DEMO_AGE_GROUPING&lt;/P&gt;&lt;P&gt;,PGM_NM AS PGM_NM&lt;/P&gt;&lt;P&gt;,OPPORTUNITY_COMPLETED AS DETAIL_OPPORTUNITY_COMPLETED&lt;/P&gt;&lt;P&gt;,ACTION_ITEM_RESPONSE_COMPLETED AS DETAIL_ACTION_ITEM_COMPLETED&lt;/P&gt;&lt;P&gt;FROM F_MEMBER_PROGRAM_BASE_PGM AS F_MEMBER_PROGRAM_BASE&lt;/P&gt;&lt;P&gt;WHERE F_MEMBER_PROGRAM_BASE.PROGRAM_ENROLLED &amp;gt; 0&lt;/P&gt;&lt;P&gt;GROUP BY PRCHSR_CD,DOB_DT,GDR;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Jul 2011 00:15:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37115#M7336</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-07-27T00:15:09Z</dc:date>
    </item>
    <item>
      <title>Proc Sql Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37116#M7337</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; Thank you Reeza and Art for the feedback.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Aug 2011 14:59:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-Sql-Question/m-p/37116#M7337</guid>
      <dc:creator>saspert</dc:creator>
      <dc:date>2011-08-16T14:59:56Z</dc:date>
    </item>
  </channel>
</rss>

