<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: How to find the Longest Common Subsequence (LCS) in SQL</title>
	<atom:link href="http://oraqa.com/2010/07/05/how-to-find-the-longest-common-subsequence-lcs-in-sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://oraqa.com/2010/07/05/how-to-find-the-longest-common-subsequence-lcs-in-sql/</link>
	<description>Oracle Question and Answer</description>
	<lastBuildDate>Mon, 19 Dec 2011 14:21:07 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: newkid</title>
		<link>http://oraqa.com/2010/07/05/how-to-find-the-longest-common-subsequence-lcs-in-sql/comment-page-1/#comment-297</link>
		<dc:creator>newkid</dc:creator>
		<pubDate>Tue, 06 Jul 2010 14:28:12 +0000</pubDate>
		<guid isPermaLink="false">http://oraqa.com/?p=607#comment-297</guid>
		<description>11GR2:
&lt;pre&gt;
WITH d AS (
    SELECT dt.*,COUNT(DISTINCT id) OVER(PARTITION BY grp_id,c) cnt_c
      FROM (SELECT dt.*,SUBSTR(in_str,rn,1) c,rn
              FROM (SELECT data.*,COUNT(*) OVER (PARTITION BY grp_id) cnt FROM data) dt
                  ,(SELECT ROWNUM rn FROM (SELECT MAX(LENGTH(in_str)) len FROM data) CONNECT BY ROWNUM&lt;=len)
             WHERE rn&lt;=LENGTH(in_str)
            ) dt
)
,t(id,grp_id,in_str,rn,w,cnt) AS (
    SELECT id,grp_id,in_str,rn,c,cnt FROM d
    UNION ALL
    SELECT d.id,d.grp_id,d.in_str,d.rn,t.w&#124;&#124;d.c,t.cnt
      FROM t,d
     WHERE t.id = d.id AND t.rn&lt;d.rn
)
SELECT grp_id,w
  FROM (SELECT grp_id,w,rank() OVER(PARTITION BY grp_id ORDER BY LENGTH(w) DESC) rnk
         FROM t
         GROUP BY grp_id,w
         HAVING COUNT(DISTINCT id) = MAX(cnt)
        )
WHERE rnk=1
;

    GRP_ID W
---------- ------------
        10 ARACDA
        10 BRACDA
        20 HHTHTHT
        20 THHTHHT
        30 PRAI
        40 HMAN
        50 TENone
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>11GR2:</p>
<pre>
WITH d AS (
    SELECT dt.*,COUNT(DISTINCT id) OVER(PARTITION BY grp_id,c) cnt_c
      FROM (SELECT dt.*,SUBSTR(in_str,rn,1) c,rn
              FROM (SELECT data.*,COUNT(*) OVER (PARTITION BY grp_id) cnt FROM data) dt
                  ,(SELECT ROWNUM rn FROM (SELECT MAX(LENGTH(in_str)) len FROM data) CONNECT BY ROWNUM&lt;=len)
             WHERE rn&lt;=LENGTH(in_str)
            ) dt
)
,t(id,grp_id,in_str,rn,w,cnt) AS (
    SELECT id,grp_id,in_str,rn,c,cnt FROM d
    UNION ALL
    SELECT d.id,d.grp_id,d.in_str,d.rn,t.w||d.c,t.cnt
      FROM t,d
     WHERE t.id = d.id AND t.rn&lt;d.rn
)
SELECT grp_id,w
  FROM (SELECT grp_id,w,rank() OVER(PARTITION BY grp_id ORDER BY LENGTH(w) DESC) rnk
         FROM t
         GROUP BY grp_id,w
         HAVING COUNT(DISTINCT id) = MAX(cnt)
        )
WHERE rnk=1
;

    GRP_ID W
---------- ------------
        10 ARACDA
        10 BRACDA
        20 HHTHTHT
        20 THHTHHT
        30 PRAI
        40 HMAN
        50 TENone
</pre>
]]></content:encoded>
	</item>
</channel>
</rss>

