sql >> Database teknologi >  >> RDS >> Mysql

har brug for hjælp til at tilføje kolonne til en tabel ved hjælp af funktion, der udfører aritmetiske operationer mellem kolonner fra to separate tabeller

Vi starter med at rydde op i forespørgslen. Du bør altid prøve at udføre dine beregninger på tværs af hver række, når det er muligt, i stedet for at udføre flere lodrette underforespørgsler, da dette undgår, at DBMS'et laver flere gennemløb over den samme tabel.

SELECT ( ( (g.wbb * SUM(IF(e.event_cd =14, 1, 0))) + (g.whbp * SUM(IF(e.event_cd =16, 1, 0) )) + (g.w1b * SUM(IF(e.event_cd =20, 1, 0))) + (g.w2b * SUM(IF(e.event_cd =21, 1, 0))) + (g. w3b * SUM(IF(e.event_cd =22, 1, 0))) + (g.whr * SUM(IF(e.event_cd =23, 1, 0)))) / ( SUM(IF(e.ab_fl ='T', 1, 0)) + SUM(HVIS(e.begivenhed_cd =14, 1, 0)) + SUM(HVIS(e.sf_fl ='T', 1, 0)) + SUM(HVIS(e) .event_cd =16, 1, 0)) ) ) SOM woba FRA begivenheder e, guts g WHERE e.year_id =g.season_id OG e.pit_start_fl ='T' OG e.pit_id =start_pitcher GRUPPE EFTER g.sæson;

Hvis jeg antager, at jeg ikke har sat et komma et sted, vil dette returnere en kolonne woba for hvert år for den angivne startkande.

Bemærk, at jeg har tilsluttet mig tabellerne på e.year_id i stedet for SUBSTRING(e.game_ID,4,4); dette undgår omkostningerne ved at kalde SUBSTRING() på hver post. Denne slags virker mindre, men det kan hurtigt lægge sig op over et stort bord.

Det burde være nok til at komme i gang.




  1. MySQL 8.0.11 fejl ved forbindelse på grund af caching_sha2_password

  2. MySQL ændre tabel og konvertere data fra tekst til datetime

  3. Er enkelte mysql-udsagn atomare i MyISAM og InnoDB?

  4. Fejl ved overførsel af database fra MySql til Postgres ved hjælp af mysql2pgsql