Comment obtenir un enregistrement pour la valeur la plus élevée en fonction du type et de 2 colonnes

Étudiant

J'ai donc une table ici appelée my_table

| userid | gender | year | money |
| ------ | ------ | ---- | ----- |
| 1      | B      | 12   | 50    |
| 1      | B      | 24   | 150   |
| 1      | B      | 36   | 5     |
| 1      | G      | 0    | 0     |
| 1      | G      | 12   | 120   |
| 1      | G      | 48   | 120   |
| 2      | B      | 12   | 23    |
| 2      | B      | 24   | 56    |
| 2      | G      | 36   | 23    |
| 3      | G      | 0    | 234   |
| 3      | G      | 12   | 34    |
| 4      | G      | 0    |  0    |

Je veux renvoyer la ligne pour l'argent le plus élevé disponible en fonction du sexe. Ainsi, par exemple, la table de retour pour le sexe B sera comme

| userid | gender | year | money |
| ------ | ------ | ---- | ----- |
| 1      | B      | 24   | 150   |
| 2      | B      | 24   | 56    |

Et la table de retour pour le genre G sera comme

| userid | gender | year | money |
| ------ | ------ | ---- | ----- |
| 1      | G      | 12   | 120   |
| 1      | G      | 48   | 120   |
| 2      | G      | 36   | 23    |
| 3      | G      | 0    | 234   |
| 4      | G      | 0    | 0     |

Mais comme la table pour le sexe G a une valeur en double, je veux qu'elle renvoie la ligne avec l'année la plus élevée. Le tableau attendu pour le sexe G est

| userid | gender | year | money |
| ------ | ------ | ---- | ----- |
| 1      | G      | 48   | 120   |
| 2      | G      | 36   | 23    |
| 3      | G      | 0    | 234   |
| 4      | G      | 0    | 0     |

Ce que j'ai essayé: http://sqlfiddle.com/#!9/5433cbc/2 Je suis en mesure d'obtenir le tableau pour le sexe B mais pas le genre G.

Ce que j'essaie de réaliser est de générer une table réunissant les deux tables de genre ci-dessus en une seule. Exemple,

| userid | year_b | max_money_for_b | year_g | max_money_for_g |
| ------ | ------ | --------------- | ------ | --------------- |
| 1      | 24     | 150             | 48     | 120             |
| 2      | 24     | 56              | 36     | 23              |
| 3      | null   | null            | 0      | 234             |
| 4      | null   | null            | 0      | 0               |
Gordon Linoff

Je pense qu'une sous-requête corrélée est l'approche la plus simple de MySQL:

select t.*
from my_table t
where t.gender = 'G' and
      (t.year, t.money) = (select t2.year, t2.money
                           from my_table t2
                           where t2.userid = t.userid and
                                 t2.gender = t.gender
                           order by t2.money desc, t2.year desc
                           limit 1
                          );

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    comment afficher un bouton au-dessus d'un autre élément ?

  2. 2

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  3. 3

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  4. 4

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  5. 5

    Conversion double en BigDecimal en Java

  6. 6

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Passer la taille d'un tableau 2D à une fonction ?

  9. 9

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  10. 10

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  11. 11

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  12. 12

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  13. 13

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  14. 14

    Exporter la table de l'arborescence vers CSV avec mise en forme

  15. 15

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  16. 16

    Créer un système Buzzer à l'aide de python

  17. 17

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  18. 18

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  19. 19

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  20. 20

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  21. 21

    Microsoft.WebApplication.targets

chaudétiquette

Archive