0
votes

Question SQL - pourquoi je ne peux pas résoudre un problème

Pourquoi ma solution d'un problème sur le site d'étude n'est pas acceptée et montrant "mauvaise réponse"?

Voici le problème - https://www.hackerrank.com/challenges/the-pads/problem/ :

Générer les deux ensembles de résultats suivants:

  1. Requête une liste de tous les noms de tous les noms dans Les professions , suivies immédiatement par la première lettre de chaque profession de parenthèse (c'est-à-dire entre parenthèses). Par exemple: Anactorname (A), Adoctorname (D), Aprofessorname (P) et ANINGERNAME (S).

  2. interroge le nombre d'occurrences de chaque profession dans professions . Trier les occurrences dans l'ordre croissant et les sortir dans le format suivant:

    Il y a un total de [profession_count] [Occupation] s.

    où [profession_count] est le nombre d'occurrences d'une profession dans professions et [profession] est le nom d'occupation minuscule. Si plus d'une occupation a le même [métier_count], ils doivent être commandés alphabétiquement.

    ma requête est la suivante: xxx

    et xxx

    La requête a la même sortie comme dans le Exemple sur Hackerrank. Qu'est-ce que je fais mal?


2 commentaires

Bienvenue dans le débordement de pile. Veuillez formater votre code et mettez-le dans des blocs de code la prochaine fois.


Bienvenue à! Veuillez ne pas relier à des sites externes avec votre description de problème. Ajoutez toutes les informations nécessaires dans votre question pour le faire un exemple de reproductible minimal


4 Réponses :


1
votes

Deux numéros:

  • La solution devrait fonctionner pour toute profession, pas seulement pour l'acteur, le docteur, la profession ou la chanteuse. Les tests ayant différentes données d'occupation échoueront.
  • Le premier résultat n'est pas commandé comme demandé

    première requête: xxx

    Votre deuxième requête attend de quelques professions statiques mais retournera null lorsque l'occupation dans le Les données de test ne sont pas l'une d'entre elles. N'utilisez pas case ici. xxx


1 commentaires

Vous travaillez! Je Google it (concat) et écrivez mon propre comme vous l'avez fait



0
votes

première requête xxx

deuxième requête xxx


0 commentaires

0
votes

La requête ci-dessous a fonctionné pour moi:

SELECT NAME || '(' || SUBSTR(OCCUPATION,1,1)||')' FROM OCCUPATIONS
UNION
SELECT 'There are a total of '|| count(occupation) || ' ' || LOWER(occupation)||'s.' FROM OCCUPATIONS
GROUP BY OCCUPATION;


0 commentaires

1
votes

Explication 1:

  1. Pour la première partie, lorsqu'il est nécessaire d'imprimer le nom avec l'occupation, nous avons des cas pour vérifier l'occupation et concatez donc le suffixe.

  2. Nous utilisons la commande par clause pour commander les résultats en fonction de l'ordre de nom ascendant. xxx

    explication 2:

    Toute la requête fait, dans ce cas, est de grouper par les résultats avec une occupation et d'impression de la chaîne requise. < / p> xxx


4 commentaires

Pouvez-vous exécuter une instruction SELECT avec du texte comme celui-ci sans utiliser la fonction concat () ? En outre, pouvez-vous ajouter une description de ce que vous avez fait différemment ici plutôt que de simplement afficher du code?


Bonjour, @tshimkus, oui, nous pouvons exécuter une instruction SELECT avec du texte comme celui-ci, en outre, nous avons des fonctions telles que gauche et droite utilisées pour imprimer le texte avec certaines manipulations de chaîne. Voici un lien vers la même w3schools.com/sql/func_sqlserver_left.asp . Et oui, en fonction de votre suggestion, j'ai ajouté la description à ma solution, ce n'est pas très différent, mais juste une approche différente à l'aide de la déclaration de cas que la solution A / C.


Merci d'avoir mis à jour la réponse. Il est beaucoup plus utile maintenant qu'il a une description de ce que le code suggéré fait.


Convenu! Merci :)