<?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 solve the Largest 7-Digit Number Puzzle in SQL</title>
	<atom:link href="http://oraqa.com/2009/01/18/how-to-solve-the-largest-7-digit-number-puzzle-in-sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://oraqa.com/2009/01/18/how-to-solve-the-largest-7-digit-number-puzzle-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/2009/01/18/how-to-solve-the-largest-7-digit-number-puzzle-in-sql/comment-page-1/#comment-262</link>
		<dc:creator>newkid</dc:creator>
		<pubDate>Thu, 24 Jun 2010 18:47:15 +0000</pubDate>
		<guid isPermaLink="false">http://oraqa.com/?p=327#comment-262</guid>
		<description>my post got messed up again. try:
&lt;pre&gt;
WITH n AS (SELECT ROWNUM-1 n FROM DUAL CONNECT BY ROWNUM&lt;=10)
,t(d1,d2,d3,d4,d5,d6,d7,num,lvl) AS (
SELECT n,0,0,0,0,0,0,TO_CHAR(n),1 FROM n
UNION ALL
SELECT d1
      ,DECODE(lvl,1,n,d2)
      ,DECODE(lvl,2,n,d3)
      ,DECODE(lvl,3,n,d4)
      ,DECODE(lvl,4,n,d5)
      ,DECODE(lvl,5,n,d6)
      ,DECODE(lvl,6,n,d7)
      ,CAST(n&#124;&#124;num AS VARCHAR2(7))
      ,lvl+1
  FROM t,n
 WHERE INSTR(TO_CHAR(num),TO_CHAR(n))=0
       AND lvl&lt;8
       AND (n=5 AND d1 IN (0,5)
            OR n IN (1,3,7,9)
            OR n IN (2,6) AND d1 IN (2,4,6,8,0)
            OR n=4 AND d1 IN (2,4,6,8,0) AND (lvl=1
                                              OR MOD(d2*10+d1,4)=0
                                              )
            OR n=8 AND d1 IN (2,4,6,8,0) AND (lvl=1
                                              OR lvl=2 AND MOD(n*1000+d2*10+d1,8)=0
                                              OR lvl NOT IN (1,2) AND MOD(d3*1000+d2*10+d1,8)=0
                                              )
            )
)
SELECT * FROM (
SELECT num FROM t 
 WHERE lvl=7 
       AND MOD(num,d1)=0 AND MOD(num,d2)=0 AND MOD(num,d3)=0 AND MOD(num,d4)=0 AND MOD(num,d5)=0
       AND MOD(num,d6)=0 AND MOD(num,d7)=0
ORDER BY num DESC
)
WHERE ROWNUM=1;

NUM
----------------------------------------
9781632
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>my post got messed up again. try:</p>
<pre>
WITH n AS (SELECT ROWNUM-1 n FROM DUAL CONNECT BY ROWNUM&lt;=10)
,t(d1,d2,d3,d4,d5,d6,d7,num,lvl) AS (
SELECT n,0,0,0,0,0,0,TO_CHAR(n),1 FROM n
UNION ALL
SELECT d1
      ,DECODE(lvl,1,n,d2)
      ,DECODE(lvl,2,n,d3)
      ,DECODE(lvl,3,n,d4)
      ,DECODE(lvl,4,n,d5)
      ,DECODE(lvl,5,n,d6)
      ,DECODE(lvl,6,n,d7)
      ,CAST(n||num AS VARCHAR2(7))
      ,lvl+1
  FROM t,n
 WHERE INSTR(TO_CHAR(num),TO_CHAR(n))=0
       AND lvl&lt;8
       AND (n=5 AND d1 IN (0,5)
            OR n IN (1,3,7,9)
            OR n IN (2,6) AND d1 IN (2,4,6,8,0)
            OR n=4 AND d1 IN (2,4,6,8,0) AND (lvl=1
                                              OR MOD(d2*10+d1,4)=0
                                              )
            OR n=8 AND d1 IN (2,4,6,8,0) AND (lvl=1
                                              OR lvl=2 AND MOD(n*1000+d2*10+d1,8)=0
                                              OR lvl NOT IN (1,2) AND MOD(d3*1000+d2*10+d1,8)=0
                                              )
            )
)
SELECT * FROM (
SELECT num FROM t
 WHERE lvl=7
       AND MOD(num,d1)=0 AND MOD(num,d2)=0 AND MOD(num,d3)=0 AND MOD(num,d4)=0 AND MOD(num,d5)=0
       AND MOD(num,d6)=0 AND MOD(num,d7)=0
ORDER BY num DESC
)
WHERE ROWNUM=1;

NUM
----------------------------------------
9781632
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: newkid</title>
		<link>http://oraqa.com/2009/01/18/how-to-solve-the-largest-7-digit-number-puzzle-in-sql/comment-page-1/#comment-261</link>
		<dc:creator>newkid</dc:creator>
		<pubDate>Thu, 24 Jun 2010 18:42:12 +0000</pubDate>
		<guid isPermaLink="false">http://oraqa.com/?p=327#comment-261</guid>
		<description>Something is wrong with this site. The correct SQL should be:

WITH n AS (SELECT ROWNUM-1 n FROM DUAL CONNECT BY ROWNUM&lt;=10)
,t(d1,d2,d3,d4,d5,d6,d7,num,lvl) AS (
SELECT n,0,0,0,0,0,0,TO_CHAR(n),1 FROM n
UNION ALL
SELECT d1
      ,DECODE(lvl,1,n,d2)
      ,DECODE(lvl,2,n,d3)
      ,DECODE(lvl,3,n,d4)
      ,DECODE(lvl,4,n,d5)
      ,DECODE(lvl,5,n,d6)
      ,DECODE(lvl,6,n,d7)
      ,CAST(n&#124;&#124;num AS VARCHAR2(7))
      ,lvl+1
  FROM t,n
 WHERE INSTR(TO_CHAR(num),TO_CHAR(n))=0
       AND lvl2 AND MOD(d3*1000+d2*10+d1,8)=0
                                              )
            )
)
SELECT * FROM (
SELECT num FROM t 
 WHERE lvl=7 
       AND MOD(num,d1)=0 AND MOD(num,d2)=0 AND MOD(num,d3)=0 AND MOD(num,d4)=0 AND MOD(num,d5)=0
       AND MOD(num,d6)=0 AND MOD(num,d7)=0
ORDER BY num DESC
)
WHERE ROWNUM=1;</description>
		<content:encoded><![CDATA[<p>Something is wrong with this site. The correct SQL should be:</p>
<p>WITH n AS (SELECT ROWNUM-1 n FROM DUAL CONNECT BY ROWNUM&lt;=10)<br />
,t(d1,d2,d3,d4,d5,d6,d7,num,lvl) AS (<br />
SELECT n,0,0,0,0,0,0,TO_CHAR(n),1 FROM n<br />
UNION ALL<br />
SELECT d1<br />
      ,DECODE(lvl,1,n,d2)<br />
      ,DECODE(lvl,2,n,d3)<br />
      ,DECODE(lvl,3,n,d4)<br />
      ,DECODE(lvl,4,n,d5)<br />
      ,DECODE(lvl,5,n,d6)<br />
      ,DECODE(lvl,6,n,d7)<br />
      ,CAST(n||num AS VARCHAR2(7))<br />
      ,lvl+1<br />
  FROM t,n<br />
 WHERE INSTR(TO_CHAR(num),TO_CHAR(n))=0<br />
       AND lvl2 AND MOD(d3*1000+d2*10+d1,8)=0<br />
                                              )<br />
            )<br />
)<br />
SELECT * FROM (<br />
SELECT num FROM t<br />
 WHERE lvl=7<br />
       AND MOD(num,d1)=0 AND MOD(num,d2)=0 AND MOD(num,d3)=0 AND MOD(num,d4)=0 AND MOD(num,d5)=0<br />
       AND MOD(num,d6)=0 AND MOD(num,d7)=0<br />
ORDER BY num DESC<br />
)<br />
WHERE ROWNUM=1;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: newkid</title>
		<link>http://oraqa.com/2009/01/18/how-to-solve-the-largest-7-digit-number-puzzle-in-sql/comment-page-1/#comment-260</link>
		<dc:creator>newkid</dc:creator>
		<pubDate>Thu, 24 Jun 2010 18:39:54 +0000</pubDate>
		<guid isPermaLink="false">http://oraqa.com/?p=327#comment-260</guid>
		<description>&lt;pre&gt;
I think there&#039;s a bug in your code:
		  WHEN n in (4)
		  THEN CASE WHEN MOD(to_number(PRIOR N&#124;&#124;N), n) = 0 THEN 1 END
WHEN LEVEL=2, this sould be: MOD(to_number(N&#124;&#124;PRIOR N), n) = 0
WHEN LEVEL=3, this sould be: MOD(to_number(PRIOR N&#124;&#124;CONNECT_BY_ROOT(n)), n) = 0

Mine in 11GR2:
WITH n AS (SELECT ROWNUM-1 n FROM DUAL CONNECT BY ROWNUM&lt;=10)
,t(d1,d2,d3,d4,d5,d6,d7,num,lvl) AS (
SELECT n,0,0,0,0,0,0,TO_CHAR(n),1 FROM n
UNION ALL
SELECT d1
      ,DECODE(lvl,1,n,d2)
      ,DECODE(lvl,2,n,d3)
      ,DECODE(lvl,3,n,d4)
      ,DECODE(lvl,4,n,d5)
      ,DECODE(lvl,5,n,d6)
      ,DECODE(lvl,6,n,d7)
      ,CAST(n&#124;&#124;num AS VARCHAR2(7))
      ,lvl+1
  FROM t,n
 WHERE INSTR(TO_CHAR(num),TO_CHAR(n))=0
       AND lvl2 AND MOD(d3*1000+d2*10+d1,8)=0
                                              )
            )
)
SELECT * FROM (
SELECT num FROM t 
 WHERE lvl=7 
       AND MOD(num,d1)=0 AND MOD(num,d2)=0 AND MOD(num,d3)=0 AND MOD(num,d4)=0 AND MOD(num,d5)=0
       AND MOD(num,d6)=0 AND MOD(num,d7)=0
ORDER BY num DESC
)
WHERE ROWNUM=1;


NUM
----------------------------------------
9781632
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<pre>
I think there's a bug in your code:
		  WHEN n in (4)
		  THEN CASE WHEN MOD(to_number(PRIOR N||N), n) = 0 THEN 1 END
WHEN LEVEL=2, this sould be: MOD(to_number(N||PRIOR N), n) = 0
WHEN LEVEL=3, this sould be: MOD(to_number(PRIOR N||CONNECT_BY_ROOT(n)), n) = 0

Mine in 11GR2:
WITH n AS (SELECT ROWNUM-1 n FROM DUAL CONNECT BY ROWNUM&lt;=10)
,t(d1,d2,d3,d4,d5,d6,d7,num,lvl) AS (
SELECT n,0,0,0,0,0,0,TO_CHAR(n),1 FROM n
UNION ALL
SELECT d1
      ,DECODE(lvl,1,n,d2)
      ,DECODE(lvl,2,n,d3)
      ,DECODE(lvl,3,n,d4)
      ,DECODE(lvl,4,n,d5)
      ,DECODE(lvl,5,n,d6)
      ,DECODE(lvl,6,n,d7)
      ,CAST(n||num AS VARCHAR2(7))
      ,lvl+1
  FROM t,n
 WHERE INSTR(TO_CHAR(num),TO_CHAR(n))=0
       AND lvl2 AND MOD(d3*1000+d2*10+d1,8)=0
                                              )
            )
)
SELECT * FROM (
SELECT num FROM t
 WHERE lvl=7
       AND MOD(num,d1)=0 AND MOD(num,d2)=0 AND MOD(num,d3)=0 AND MOD(num,d4)=0 AND MOD(num,d5)=0
       AND MOD(num,d6)=0 AND MOD(num,d7)=0
ORDER BY num DESC
)
WHERE ROWNUM=1;

NUM
----------------------------------------
9781632
</pre>
]]></content:encoded>
	</item>
</channel>
</rss>

