2016-08-02 38 views
-2

如何將兩個表與組值相結合?如何將兩個表與組值相結合?

我的查詢:

SELECT 
    employee.employee_name, 
    count(employee.employee_name) as count, 
    sum(table1.position)  as totalshares 
FROM 
    erom_kmch.table1 
LEFT OUTER JOIN 
    erom.employee 
     ON  employee.bene_type_table1=table1.bene_type  
     AND employee.bene_stype_table1=table1.bene_stype 
WHERE 
    table1.date = '2016-04-15' 
group by 
    employee.employee_name 
UNION 
SELECT 
    employee.employee_name, 
    count(employee.employee_name) as count, 
    sum(table2.shares) as totalshares  
FROM 
    erom_kmch.table2 
LEFT OUTER JOIN 
    erom.employee  
     ON employee.type_table2=table2.type  
     AND employee.bo_substat_table2=table2.bo_substat 
WHERE 
    table2.date = '2016-04-15' 
group by 
    employee.employee_name 

返回:

employee_name   count totalshares 
    NULL     0 0  21967 
    Clearing Member  9 9  1386 
    devloper-php   4 4  1984 
    devloper-.net  46 46  410713 
    devloper-.android 2 
    NULL  4056461  0  117154 
    devloper-.C#php  2 5  31618309 
    devloper-.net  
    Resident Individual 939 25 361020 22762 

但我需要這樣的輸出:

employee_name   count  totalshares 
      NULL    0  139121 
     Clearing Member  15  5355 
     devloper-php   9  2293 
     devloper-.net  46  433475 
     devloper-.android  2  4056461 
     devloper-.C#   2  31618 
     Resident Individual 3668  2662925 
     Individual- Director  1  100 

我加入和工會兩個表,我需要組兩個表的值。我得到兩個輸出,我需要兩個表的總和和計數作爲一個輸出。

+0

把它放在一個子查詢,並在外部查詢 – HoneyBadger

+0

順便說和,我知道MySQL允許它,但你應該把它並不是所有屬性在聚合函數在'組by',而不是相反各地 – HoneyBadger

+0

顯示烏爾原始表 – jonju

回答

0

你應該使用子查詢:

SELECT 
     [YourField] 
    , [YourAggregate] 
FROM 
    (SELECT 
      table1.holder 
     , table1.bene_type 
     , table1.bene_stype 
     , employee.employee_name 
     , COUNT(employee.employee_name) AS [count] 
     , SUM(table1.position) AS totalshares 
    FROM 
     erom_kmch.table1 
      LEFT OUTER JOIN 
     erom.employee 
      ON employee.bene_type_table1=table1.bene_type AND employee.bene_stype_table1=table1.bene_stype 
    WHERE 
     table1.date = '2016-04-15' 
    GROUP BY 
     employee.employee_name 
    UNION 
    SELECT 
     table2.cust_name 
     , table2.type 
     , table2.bo_substat 
     , employee.employee_name 
     , COUNT(employee.employee_name) as [count] 
     , SUM(table2.shares) as totalshares 
    FROM 
     erom_kmch.table2 
      LEFT OUTER JOIN 
     erom.employee 
      ON employee.type_table2=table2.type AND employee.bo_substat_table2=table2.bo_substat 
    WHERE 
     table2.date = '2016-04-15' 
    GROUP BY employee.employee_name 
    ) AS A 
GROUP BY 
    [YourField] 

注:您還應該查詢易於閱讀。

+0

通過他的輸出的外觀。我不認爲有必要選擇所有列 – jonju

+0

她在我做出答案後編輯。現在編輯.. –

+0

看起來他/她有困難時期的編輯和格式化他/她的問題 – jonju

相關問題