SQLでProject Euler − Problem 03
SQL Server では暗黙的なデータ変換の悪影響で下記SQLでは問題が解けません。
勝手なデータ型変換をやめさせる事が出来れば下記SQLでデータ型を全部 decimal(12,0) とかにすれば解けるかと思われます。
SQL Serverもまだまだだ。
個人的にはPostgreSQL最強と思えて仕方がありません!
(ただのPostgreSQL好きなだけかもしれませんが!)
/** 【問題】 13195 の素因数は 5、7、13、29 である。 600851475143 の素因数のうち最大のものを求めよ。 **/ WITH pf (prime,c,acm) AS ( (SELECT 2, 0, 100) UNION ALL SELECT (CASE WHEN prime <= acm AND acm%prime = 0 THEN prime ELSE (CASE prime WHEN 2 THEN 3 ELSE prime + 2 END) END) , (CASE WHEN prime <= acm AND acm%prime = 0 THEN c+1 ELSE 0 END) , (CASE WHEN prime <= acm AND acm%prime = 0 THEN acm / prime ELSE acm END) FROM pf WHERE 1 < pf.acm ) SELECT * FROM pf m WHERE 1 <= m.c AND EXISTS ( SELECT 1 FROM pf s GROUP BY s.prime HAVING max(s.prime) = m.prime AND max(s.c) = m.c ) OPTION (MAXRECURSION 0)