2016-01-18 75 views
0

分組總我有這個表:MySql的選擇表示條件

SALESMAN | INVOICE  | VALUE 
1  | 7470  | 10  
1  | 7471  | 20  
1  | 7472  | 30  
2  | 7473  | 40  
2  | 7474  | 50  

我想以一個查詢得到這個結果:

SALESMAN | INVOICE  | VALUE | TOTAL_VALUE | TOTAL_ITEMS 
1  | 7470  | 10  | 40   | 3 
1  | 7471  | 20  | 40   | 3 
1  | 7472  | 10  | 40   | 3 
2  | 7473  | 40  | 90   | 2 
2  | 7474  | 50  | 90   | 2 

TOTAL_VALUE是所有VALUE的總和相同SALESMANTOTAL_ITEMS是具有相同的行數SALESMAN

在MySql中可以做到這一點嗎?

+0

兩個,拉胡爾和豪達的回答爲我工作,我曾嘗試與MySQL工作臺客戶端的一些數據,它顯示了同樣的時間。現在的問題是:兩種方法都更有效率? – adrian4aes

回答

1

使用GROUP BY

SELECT s.SALESMAN, s.INVOICE, s.VALUE, 
xx.TOTAL_VALUE, xx.TOTAL_ITEMS 
FROM sales s JOIN 
(SELECT SALESMAN, 
    SUM(VALUE) AS TOTAL_VALUE, 
    COUNT(value) AS TOTAL_ITEMS 
    FROM sales 
    GROUP BY SALESMAN) xx ON S.SALESMAN = xx.SALESMAN; 
1

此查詢:

SELECT SALESMAN, INVOICE , VALUE, 
(select sum(VALUE) FROM your_table t1 where t1.SALESMAN = your_table.SALESMAN) 
AS TOTAL_VALUE, 
(select count(VALUE) FROM your_table t2 where t2.SALESMAN = your_table.SALESMAN) 
AS TOTAL_ITEMS 
from your_table 
+0

向讀者投擲代碼沒有解釋是不是很有幫助。請解釋哪些具體問題需要解決,以及SQL語句如何解決它。 – IInspectable

+0

你能解釋你的代碼是如何工作的?這將使OP和其他人能夠在其他地方瞭解和應用您的方法(如果適用)。僅有代碼的答案[不鼓勵](http://meta.stackexchange.com/q/148272/284827),並且可能被刪除。 - [審查期間](http://stackoverflow.com/review/low-quality-posts/10940464) –