Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL sum() untuk baris yang berbeda

Saya mungkin salah tapi dari apa yang saya mengerti

  • conversions.id adalah kunci utama dari konversi tabel Anda
  • stats.id adalah kunci utama dari statistik tabel Anda

Jadi untuk setiap conversions.id Anda memiliki paling banyak satu links.id yang terpengaruh.

Permintaan Anda seperti melakukan produk kartesius dari 2 set :

[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 

dan untuk setiap tautan, Anda mendapatkan baris sizeof([clicks]) x sizeof([conversions])

Seperti yang Anda catat, jumlah konversi unik dalam permintaan Anda dapat diperoleh melalui

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

perbedaan ini berhasil menghapus semua baris [klik] dalam produk kartesius

tapi jelas

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

Dalam kasus Anda, sejak

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

kamu punya

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

jadi saya akan menguji permintaan Anda dengan

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;

Terus kabari saya !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. tomcat7 - jdbc datasource - Ini sangat mungkin membuat kebocoran memori

  2. MySQL Pilih semua kolom dari satu tabel dan beberapa dari tabel lain

  3. Tampilkan (Daftar) Database MySQL di Linux melalui Command Line

  4. Mengapa jumlah baris yang diperkirakan sangat berbeda dalam hasil phpmyadmin?

  5. Temukan jumlah kolom dalam sebuah tabel