Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

cần trợ giúp để thêm cột vào một bảng bằng cách sử dụng hàm thực hiện các phép toán số học giữa các cột từ hai bảng riêng biệt

Chúng tôi sẽ bắt đầu bằng cách làm sạch truy vấn. Bạn nên luôn cố gắng thực hiện các phép tính của mình trên mỗi hàng khi có thể thay vì thực hiện nhiều truy vấn con theo chiều dọc, vì điều này tránh việc DBMS thực hiện nhiều lần chuyển trên cùng một bảng.

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;

Giả sử tôi không bỏ dấu phẩy ở đâu đó, điều này sẽ trả về một cột woba cho mỗi năm đối với người ném bóng bắt đầu được chỉ định.

Lưu ý rằng tôi đã tham gia các bảng trên e.year_id thay vì SUBSTRING(e.game_ID,4,4); điều này tránh được chi phí gọi SUBSTRING() trên mỗi bản ghi. Điều này có vẻ nhỏ, nhưng nó có thể cộng lại nhanh chóng trên một bảng lớn.

Như vậy là đủ để bạn bắt đầu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hoạt động không được phép sau khi ResultSet đóng (mysql, java)

  2. MySQL chọn ngày hôm qua

  3. Tên bảng Mysql không hoạt động bằng chữ hoa

  4. Truyền tên bảng làm tham số của câu lệnh đã chuẩn bị

  5. Chèn giá trị BLOB vào cơ sở dữ liệu MySQL