Created
December 7, 2019 14:15
-
-
Save fabriziomello/2dcfd243509fdd26f5ea47f476661530 to your computer and use it in GitHub Desktop.
Desafio proposto por Henrique Bastos no Instagram
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* | |
* Desafio do Henrique Bastos () | |
* | |
* Dado uma lista de números e um número k, retorne se quaisquer dois números da lista | |
* somados resultam no número k. | |
* | |
* Por exemplo, dado [10, 15, 3, 7] e k = 17, retorne verdadeiro, já que 10 + 7 = 17. | |
* | |
* Passe pelos números da lista uma única vez. | |
* | |
* SQLFiddle: http://sqlfiddle.com/#!17/06912/109 | |
* | |
*/ | |
WITH lista(l) AS ( | |
VALUES (10.0), (15.0), (3.0), (7.0) | |
), | |
teste (k) AS ( | |
VALUES (18.0), (25.0), (13.0), (22.0), (10.0), (17.0), (50.0), (6.0), (5.0), (1.0), (200.0) | |
) | |
SELECT | |
array_agg(l) | |
, k | |
, ((k % avg(l)) <> k) and ((k % sum(l)) = k) AS "Eh a soma de dois elementos?" | |
FROM | |
lista, teste | |
GROUP BY | |
k; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Não dá pra fazer assim porque uma das premissas é passar apenas uma vez na lista então o JOIN da lista com ela mesma quebra porque vc tem duas iterações na mesma lista, por isso tem que usar operações aritméticas IMHO.