<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Paul Nielsen : over partition sswug virtual conference T-SQL</title><link>http://sqlblog.com/blogs/paul_nielsen/archive/tags/over+partition+sswug+virtual+conference+T-SQL/default.aspx</link><description>Tags: over partition sswug virtual conference T-SQL</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Partitioned Group Query </title><link>http://sqlblog.com/blogs/paul_nielsen/archive/2008/06/26/partitioned-group-query.aspx</link><pubDate>Thu, 26 Jun 2008 18:03:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:7523</guid><dc:creator>Paul Nielsen</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/paul_nielsen/comments/7523.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/paul_nielsen/commentrss.aspx?PostID=7523</wfw:commentRss><description>&lt;P&gt;In the SSWUG Virtual Conference this morning, in the chat room following my Kill the Cursor session, Boris asked, "How can I find the last five events for every device, without a cursor?" &lt;/P&gt;
&lt;P&gt;Here's&amp;nbsp;the script,&amp;nbsp;Boris. Essentially it uses the Over clause with a Partition by in a subquery to segment by device and number each row. The outer query then has a where clause to restrict the results to the last five. &lt;/P&gt;
&lt;P&gt;Boris, I'm interested in the performance gains you see with the set-based query over the cursor. Once you test this will you please post your findings? thanks, &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=5&gt;&lt;FONT color=#0000ff size=5&gt;&lt;FONT size=1&gt;USE&amp;nbsp;&lt;FONT color=black&gt;TempDB&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Events&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventID&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;INT&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#434343&gt;IDENTITY&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;NOT&amp;nbsp;NULL&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;PRIMARY&amp;nbsp;KEY&lt;/FONT&gt;&lt;FONT color=gray&gt;,&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Device&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;CHAR&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;/FONT&gt;&lt;FONT color=black&gt;2&lt;/FONT&gt;&lt;FONT color=gray&gt;),&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventTime&amp;nbsp;DATETIME&lt;/FONT&gt;&lt;FONT color=gray&gt;,&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Data&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;CHAR&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;/FONT&gt;&lt;FONT color=black&gt;10&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;)&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=black&gt;GO&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;INSERT&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Events&lt;/FONT&gt;&lt;FONT color=gray&gt;(&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Device&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventTime&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Data&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;VALUES&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;/FONT&gt;&lt;FONT color=red&gt;'a'&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=magenta&gt;GETDATE&lt;/FONT&gt;&lt;FONT color=gray&gt;(),&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=red&gt;'asd'&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;INSERT&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Events&lt;/FONT&gt;&lt;FONT color=gray&gt;(&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Device&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventTime&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Data&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;VALUES&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;/FONT&gt;&lt;FONT color=red&gt;'b'&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=magenta&gt;GETDATE&lt;/FONT&gt;&lt;FONT color=gray&gt;(),&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=red&gt;'qwe'&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;INSERT&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Events&lt;/FONT&gt;&lt;FONT color=gray&gt;(&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Device&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventTime&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Data&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;VALUES&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;/FONT&gt;&lt;FONT color=red&gt;'c'&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=magenta&gt;GETDATE&lt;/FONT&gt;&lt;FONT color=gray&gt;(),&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=red&gt;'sdf'&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=green&gt;--&amp;nbsp;waitfor&amp;nbsp;delay&amp;nbsp;'00:00:00.100'&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=black&gt;GO&amp;nbsp;1000&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;INSERT&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Events&lt;/FONT&gt;&lt;FONT color=gray&gt;(&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Device&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventTime&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Data&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;VALUES&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;/FONT&gt;&lt;FONT color=red&gt;'a'&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=magenta&gt;GETDATE&lt;/FONT&gt;&lt;FONT color=gray&gt;(),&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=red&gt;'last&amp;nbsp;five'&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;INSERT&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Events&lt;/FONT&gt;&lt;FONT color=gray&gt;(&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Device&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventTime&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Data&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;VALUES&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;/FONT&gt;&lt;FONT color=red&gt;'b'&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=magenta&gt;GETDATE&lt;/FONT&gt;&lt;FONT color=gray&gt;(),&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=red&gt;'last&amp;nbsp;five'&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;INSERT&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Events&lt;/FONT&gt;&lt;FONT color=gray&gt;(&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Device&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventTime&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Data&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;VALUES&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;/FONT&gt;&lt;FONT color=red&gt;'c'&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=magenta&gt;GETDATE&lt;/FONT&gt;&lt;FONT color=gray&gt;(),&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=red&gt;'last&amp;nbsp;five'&lt;/FONT&gt;&lt;FONT color=gray&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;WAITFOR&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;delay&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=red&gt;'00:00:00.100'&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=black&gt;GO&amp;nbsp;5&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=5&gt;&lt;FONT color=#0000ff size=5&gt;&lt;FONT size=1&gt;&lt;FONT color=black&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=5&gt;&lt;FONT color=#0000ff size=5&gt;&lt;FONT size=1&gt;&lt;FONT color=black&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=blue&gt;SELECT&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;*&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;FROM&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;SELECT&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventID&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Device&lt;/FONT&gt;&lt;FONT color=gray&gt;,&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;EventTime&lt;/FONT&gt;&lt;FONT color=gray&gt;,&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Row_Number&lt;/FONT&gt;&lt;FONT color=gray&gt;()&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;OVER&lt;/FONT&gt;&lt;FONT color=gray&gt;(&lt;/FONT&gt;&lt;FONT color=black&gt;partition&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;BY&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;device&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;ORDER&amp;nbsp;BY&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;eventtime&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;DESC&lt;/FONT&gt;&lt;FONT color=gray&gt;)&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;AS&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;RowNum&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;FROM&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Events&lt;/FONT&gt;&lt;FONT color=gray&gt;)&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;sq&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;WHERE&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;RowNum&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=gray&gt;&amp;lt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;5&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=7523" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/paul_nielsen/archive/tags/over+partition+sswug+virtual+conference+T-SQL/default.aspx">over partition sswug virtual conference T-SQL</category></item></channel></rss>