Esercizio MySQL - mostrare valori tabella esclusi quelli con massima e minima frequenza

di il
2 risposte

Esercizio MySQL - mostrare valori tabella esclusi quelli con massima e minima frequenza

Ciao ragazzi ,
sono un nuovo iscritto al forum e sto studiando SQL.
Mi sono bloccato totalmente su un esercizio.
Ci sono due tabelle :

SPORTS
ID SPORT
1 - football
2 - hockey
3 - pool

ATLETI
ID NAME SPORT

001 - John Doe - football

002 - Ann Bailey - hockey

003 - John Broly - football

004 - Matt Dig - pool

005 - Kevin Li - football

006 - Joyce Lee - pool

Richiede di scrivere una query che restituisca i valori degli sport nella tabella ATLETI , escludendo però gli sport con frequenza massima e minima.
Qui l'output dovrebbe quindi essere "pool".
Qualche suggerimento ? Grazie in anticipo !

2 Risposte

  • Re: Esercizio MySQL - mostrare valori tabella esclusi quelli con massima e minima frequenza

    Select * from SPORTS
    where sport not in( select max(sport), min(sport) from ATLETI where min(sport) - 1 ) forse dovrebbe essere questo
  • Re: Esercizio MySQL - mostrare valori tabella esclusi quelli con massima e minima frequenza

    Visto che la tabella sport è inutile in quanto nella tabella atleti è ripetuto lo sport e non la chiave della tabella sport io farei:
    
    select sport, count(id) as conta from atleti group by sport
              having
              conta <> (select count(id) from atleti group by sport  order by count(id) desc limit 1)
                and               
              conta <> (select count(id) from atleti group by sport  order by count(id) asc limit 1)
    


    Ossia conto i vari sport raggruppandoli e poi li riconto 2 volte ordinandoli desc e asc ed prendendo solo il primo record, ossia i massimi e minimi, e con having li escludo, forse si può migliorare
    W.
Devi accedere o registrarti per scrivere nel forum
2 risposte