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

MYSQL sum () cho các hàng riêng biệt

Tôi có thể sai nhưng từ những gì tôi hiểu

  • chuyển đổi.id khóa chính trong bảng của bạn chuyển đổi
  • stats.id khóa chính trong bảng của bạn số liệu thống kê

Vì vậy, đối với mỗi chuyển đổi. Bạn có nhiều nhất một links.id bị ảnh hưởng không.

Yêu cầu của bạn hơi giống với việc làm sản phẩm theo kiểu cacte gồm 2 bộ:

[clicks]
SELECT *
FROM links 
LEFT OUTER JOIN stats ON links.id = stats.parent_id 

[conversions]
SELECT *
FROM links 
LEFT OUTER JOIN conversions ON links.id = conversions.link_id 

và đối với mỗi liên kết, bạn nhận được sizeof ([nhấp chuột]) x sizeof ([chuyển đổi]) dòng

Như bạn đã lưu ý, số lượng chuyển đổi duy nhất trong yêu cầu của bạn có thể nhận được thông qua

count(distinct conversions.id) = sizeof([conversions])

sự khác biệt này quản lý để loại bỏ tất cả các dòng [nhấp chuột] trong sản phẩm của cartesian

nhưng rõ ràng

sum(conversions.value) = sum([conversions].value) * sizeof([clicks])

Trong trường hợp của bạn, kể từ

count(*) = sizeof([clicks]) x sizeof([conversions])
count(*) = sizeof([clicks]) x count(distinct conversions.id)

bạn có

sizeof([clicks]) = count(*)/count(distinct conversions.id)

vì vậy tôi sẽ kiểm tra yêu cầu của bạn với

SELECT links.id, 
   count(DISTINCT stats.id) as clicks, 
   count(DISTINCT conversions.id) as conversions, 
   sum(conversions.value)*count(DISTINCT conversions.id)/count(*) as conversion_value 
FROM links 
LEFT OUTER JOIN stats ON links.id = stats.parent_id 
LEFT OUTER JOIN conversions ON links.id = conversions.link_id 
GROUP BY links.id 
ORDER BY links.created desc;

Giữ cho tôi được đăng! Jerome



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Định dạng số thành 2 chữ số thập phân

  2. Hướng dẫn MySQL Workbench - Hướng dẫn Toàn diện về Công cụ RDBMS

  3. Đang tải thông báo lớp com.mysql.jdbc.Driver ... không được dùng nữa

  4. MySQL Thêm khóa ngoại

  5. Làm cách nào để kích hoạt Nhật ký truy vấn MySQL?