sql >> Databáze >  >> RDS >> Mysql

Mysql join a součet je dvojnásobný výsledek

Jeho zdvojnásobení, protože se titul opakuje v tabulkách fondů a výnosů. Tím se vynásobí počet záznamů, kde se shoduje. To je docela snadné zjistit, pokud odeberete agregační funkce a podíváte se na nezpracovaná data. Podívejte se zde

Způsob, jak to obejít, je vytvořit inline pohledy na vaše agregáty a připojit se k těmto výsledkům.

SELECT R.title_id, 
       R.revenue, 
       R.cost, 
       F.interest 
FROM   (SELECT title_id, 
               Sum(revenue) revenue, 
               Sum(cost)    cost 
        FROM   revenue 
        GROUP  BY revenue.title_id) r 
       LEFT JOIN (SELECT title_id, 
                         Sum(interest) interest 
                  FROM   fund 
                  GROUP  BY title_id) f 
              ON r.title_id = F.title_id 

výstup

| TITLE_ID | REVENUE | COST | INTEREST |
----------------------------------------
|        1 |      30 |   11 |       30 |
|        2 |      30 |   11 |       30 |
|        3 |      30 |   11 |       30 |
|        4 |      30 |   11 |       30 |

ukázka



  1. Zápis souboru csv do databáze SQL Server pomocí pythonu

  2. Procesory AMD EPYC řady 7002 a SQL Server

  3. Problém pro vložení pomocí psycopg

  4. codeigniter přidáním IS NULL do find_in_set