J'essaie de résoudre HTTPS: //www.hackerrank. com / défis / Harry-Potter-and-Wands / Problème
Avec la configuration mySQL appropriée, on peut faire suite à p> mais la configuration MySQL de HackerRank n'autorise pas regroupement partiel. Il jette une erreur p> Sélectionner la liste n'est pas en groupe par clause et ne contient pas non pas)
colonne 'run_eootvjd0lna.w.id' qui ne dépend de pas fonctionnellement de
colonnes en groupe par clause; Ceci est incompatible avec
sql_mode = seulement_full_group_by p>
BlockQuote> Je tiens donc à filtrer tous les doublons pour un code donné dans souhaite obtenir une suggestion sur l'extraction de lignes de monnaies minimales pertinentes, de sorte qu'elle puisse être utilisée plus loin. < / P> PS: J'ai créé un SQLFiddle avec exemple Data ici < / p> p>
wands code> de table et laissez uniquement des lignes ayant des pièces minimales minimales_ned. De cette façon, je peux ensuite rejoindre
wands_property code> sur la table extraite. P>
3 Réponses :
Je ne suis pas sûr de ne pas avoir raison
mais avec p> vous obtenez p> ceci est le résultat pour toutes les baguettes qui coûtent minimum pour chaque code qui n'est pas le mal sans le regrouper. p> p>
Voici mon EM> em> strong> de la solution (solution finale dans étape 3 em> strong>): étape 1: em> strong> p> filtres avec des pièces minimales nécessaires en fonction de la puissance et du code.
Pourquoi CODE & POWER, car l'exigence souhaite que nous filtrons en fonction de l'âge et de l'énergie et que l'âge a une relation de 1-1 avec le code de sorte que le code et la puissance sont des endroits logiques pour filtrer p> Utilisez cette table avec uniquement des lignes filtrées pour obtenir toutes les colonnes de la table des baguettes p> select w.id, wp.age, w.code, min(w.coins_needed), w.power from wands w
join (
select w2.code, w2.power, min(w2.coins_needed) coins from wands w2
group by w2.code, w2.power
) wcp
on wcp.code = w.code and wcp.power = w.power and wcp.coins = w.coins_needed
join wands_property wp
on wp.code = w.code and wp.is_evil=0
order by w.power desc, wp.age desc ;
@katch je pense dans la première instruction "SELECT" que vous n'avez pas besoin d'utiliser min sur pièces_needed depuis Min est déjà appliquée dans la sous-requête pour filtrer uniquement les plus petites pièces_need pour le même code et la même puissance, j'ai exécuté ce code et c'était accepté comme la bonne réponse
Sélectionnez W.ID, P.AGE, W.Coins_Needed, W.`Power` à partir de wands w Inner Joindre (Sélectionnez W1.Code, W1.Power, Min (w1.Coin_needed) en tant que pièces de la WANDS W1 Group par code par code , puissance) comme w2 sur w.code = w2.code et w.coin_needed = w2.Coines et w.`power` = w2.`Opower` rejoindre interne wands_property p sur w.code = p.code où p.is_evil = 0 ordre by W.`Power` desc, P.AGE Desc Code> P>