Mysql median verdi

Mysql median verdi
Mellomverdien av datasettet kalles medianverdien i henhold til statistikken. Medianverdien vil være mellomnummeret til en liste som inneholder oddetallartikler. Medianverdien vil bli beregnet ved å finne gjennomsnittet av de to midtnumrene på listen hvis de totale elementene på listen er jevn. Det er nødvendig å sortere listen i stigende rekkefølge for å finne ut medianverdien. Det er ingen innebygd funksjon i MySQL for å finne ut medianverdien. Medianverdien beregnes i MySQL når du skriver spørringen. Måten å finne ut medianverdien i MySQL har blitt vist i denne opplæringen ved å bruke tabellen.

Forutsetninger:

Du må opprette en tabell med data i en MySQL -database for å finne medianverdien til tabelldataene. Åpne terminalen og koble til MySQL -serveren ved å utføre følgende kommando:

$ sudo mysql -u root

Kjør følgende kommando for å opprette en database som heter test_db:

Opprette databasetest_db;

Kjør følgende kommando for å velge databasen:

Bruk test_db;

Kjør følgende spørsmål for å opprette en tabell som heter merker med fem felt:

Lag tabellmerker (
id int auto_increment primærnøkkel,
kurs_kode varchar (10) ikke null,
kursnavn varchar (30),
std_id varchar (20),
oppnådd_merker int);

Kjør følgende sett inn spørring for å sette inn fem verdier i merker bord:

Sett inn 'Marks' ('Id', 'Course_Code', 'Course_Name', 'STD_ID', 'oppnådd_merker') verdier
(NULL, 'C-4533', 'Java programmering', '2312', '90'),
(NULL, 'C-7845', 'PHP-programmering', '9564', '78'),
(Null, 'C-3009', 'Web Design', '9076', '65'),
(Null, 'C-4511', 'Python Programming', '8923', '75'),
(NULL, 'C-7645', 'BASH-programmering', '1289', '81');

Kjør SELECT -spørringen for å lese verdiene til merker bord:

Velg * fra merker;

De oppnådd_merker felt av merker Tabellen inneholder de numeriske verdiene, og medianverdien til denne kolonnen er blitt søkt i neste del av denne opplæringen:

For å finne ut medianverdien i MySQL, vil et indeksnummer kreve festing til hver rad i tabellen. Følgende SET -kommando vil initialisere @Row_Index -variabelen med verdien -1 fordi indeksen for posten vil telles fra 0:

Sett @row_index: = -1;

Registreringene av tabellen vil kreve å sortere basert på verdiene til Fields -verdiene for å finne ut medianverdien til denne kolonnen. Så kjør følgende spørring for å sortere tabellen basert på feltet oppnådd_mark og fest indeksverdien med hver rad:

Velg @Row_Index: = @ROW_INDEX + 1 som ROW_INDEX, oppnådd_merker
Fra merker
Bestilling av innhentede_merker;

Produksjon:

Følgende utgang vises etter å ha utført de tidligere kommandoene. Etter sortering vil den første indeksen inneholde den laveste verdien av kolonnen oppnådd_marks, og den siste indeksen vil ha den høyeste verdien av Kolonnen for oppnådd_marks:

Det totale antallet poster i tabellen merker er 5, noe som er rart. Så medianverdien til den oppnådde kolonnen oppnådd_mark vil finne ut av følgende valgte spørring. Den siste verdien av radindeksen er 4, i henhold til utdataene fra forrige spørring. Både gulv og takverdier for 4/2 er 2. Den tilsvarende oppnådde_marksverdien til radindeksen 2 er 78.

PLUKKE UT *
FRA (
Velg @Row_Index: = @ROW_INDEX + 1 som ROW_INDEX, oppnådd_merker
Fra merker ordre av oppnådde_merker) som undervisning
Hvor undervisning.ROW_INDEX IN (gulv (@row_index / 2), Ceil (@row_index / 2));

Produksjon:

Følgende utgang vises etter å ha utført forrige spørring:

Den neste delen av denne opplæringen viser å finne medianverdien for et jevnt antall poster. Kjør følgende innsettingsspørsmål for å legge til en annen post til merker Tabell for å lage det totale antallet poster over tabellen til 6 som er jevn:

Sett inn 'Marks' ('Id', 'Course_Code', 'Course_Name', 'STD_ID', 'ACCEEDED_MARKS') VERDIER (NULL, 'C-1122', 'C ++ programmering', '6745', '66');

Kjør følgende velger spørring for å lese gjeldende verdier for merker bord:

Velg * fra merker;

Produksjon:

Følgende utgang vises etter å ha utført ovennevnte innsats og velger spørring:

Hvis følgende spørring blir utført igjen for tabellen med enda antall rader, vil to medianverdier bli generert som ikke er riktig:

PLUKKE UT *
FRA (
Velg @Row_Index: = @ROW_INDEX + 1 som ROW_INDEX, oppnådd_merker
Fra merker ordre av oppnådde_merker) som undervisning
Hvor undervisning.ROW_INDEX IN (gulv (@row_index / 2), Ceil (@row_index / 2));

Produksjon:

Følgende utdata vises etter å ha utført forrige spørring. Resultatet viser to medianverdier her. Gjennomsnittet av disse verdiene vil være riktig medianverdi.

Kjør følgende velg spørring for å finne ut de riktige medianverdiene i den oppnådde_marks -kolonnen i Marks -tabellen ved å bruke AVG () Aggregate -funksjonen i spørringen. Her brukes to utvalgte spørsmål. Den indre utvalgte spørringen brukes til å finne ut medianverdien som kan være en eller to verdier basert på det totale antallet rader i tabellen. Det ytre utvalgte spørringen vil finne ut gjennomsnittsverdien eller verdiene til oppnådd_merker Kolonnen returnert av den indre utvalgte spørringen. Basert på innholdet i merker tabell, spørringen vil generere gjennomsnittet av oppnådd_merker verdier av 3. og fjerde rad av merker bord.

Velg AVG (subQuery.oppnådd_merker) som median_value
FRA (
Velg @Row_Index: = @ROW_INDEX + 1 som ROW_INDEX, oppnådd_merker
Fra merker
Bestill av innhentede_merker
) Som subquery
Hvor undervisning.ROW_INDEX
I (gulv (@row_index / 2), Ceil (@row_index / 2));

Produksjon:

Følgende utdata vises etter å ha utført forrige spørring. Gjennomsnittet av 75 og 78 er (75+78)/2 eller 76.50:

Konklusjon:

Måten å beregne medianverdien til den aktuelle kolonnen i tabellen som kan inneholde jevnt antall rader er vist i denne opplæringen ved å bruke SELECT -spørringen. Denne opplæringen vil hjelpe brukeren til å forstå MySQL -medianverdien riktig. Vi håper du fant denne artikkelen nyttig. Sjekk ut andre Linux -hint -artikler for flere tips og opplæringsprogrammer.