Mysql
 sql >> Baza danych >  >> RDS >> Mysql

potrzebujesz pomocy przy dodawaniu kolumny do jednej tabeli za pomocą funkcji, która wykonuje operacje arytmetyczne między kolumnami z dwóch oddzielnych tabel

Zaczniemy od uporządkowania zapytania. Zawsze powinieneś starać się wykonywać obliczenia w każdym wierszu, jeśli to możliwe, zamiast wykonywać wiele podzapytań w pionie, ponieważ pozwala to uniknąć wielokrotnych przejść DBMS nad tą samą 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(IF(e.event_cd = 14, 1, 0))
   + SUM(IF(e.sf_fl = 'T',   1, 0))
   + SUM(IF(e.event_cd = 16, 1, 0))
   )
  ) AS woba
  FROM events e, guts g
  WHERE e.year_id = g.season_id
    AND e.pit_start_fl = 'T'
    AND e.pit_id = starting_pitcher
  GROUP BY g.season;

Zakładając, że nie upuściłem gdzieś przecinka, zwróci to kolumnę woba za każdy rok dla określonego miotacza startowego.

Zauważ, że dołączyłem do stołów na e.year_id zamiast SUBSTRING(e.game_ID,4,4); pozwala to uniknąć narzutu wywołania SUBSTRING() na każdym rekordzie. Takie rzeczy wydają się drobne, ale mogą szybko się sumować przy dużym stole.

To powinno wystarczyć, aby zacząć.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przenieś węzeł w drzewie zestawów zagnieżdżonych

  2. jak używać LINQ to SQL z mySQL

  3. Jak zaktualizować mysql za pomocą Pythona, gdzie pola i wpisy pochodzą ze słownika?

  4. Grails:mapuj pole mysql typu enum na klasę domeny

  5. Dlaczego procedury składowane nadal nie są obsługiwane w Railsach (3+)?