Mysql
 sql >> база данни >  >> RDS >> Mysql

нужда от помощ за добавяне на колона към една таблица с помощта на функция, която извършва аритметични операции между колони от две отделни таблици

Ще започнем с почистване на заявката. Винаги трябва да се опитвате да извършвате изчисленията си във всеки ред, когато е възможно, вместо да извършвате множество вертикални подзаявки, тъй като това избягва СУБД да извършва множество преминавания през една и съща таблица.

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;

Ако приемем, че не съм пуснал запетая някъде, това ще върне колона woba за всяка година за посочения начален стомна.

Имайте предвид, че се присъединих към таблиците на e.year_id вместо SUBSTRING(e.game_ID,4,4); това избягва излишните разходи за извикване на SUBSTRING() на всеки запис. Този тип неща изглеждат незначителни, но могат да се добавят бързо върху голяма маса.

Това трябва да е достатъчно, за да започнете.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql Count не може да показва 0 стойности

  2. Увеличете стойността в заявката за актуализиране на MySQL

  3. Актуализирайте общата сума въз основа на предишния ред на баланса

  4. MySql - Как да получите стойност в предишния ред и стойност в следващия ред?

  5. Мога ли да стартирам sql файл на моя екземпляр на Google Cloud Sql с помощта на командата gcloud sql