2016-01-03 41 views
0

海蘭我有2個表怎麼算或GROUPBY後在MySQL行總數

一,應用

id | name | status 
==================== 
1 | morvick | complete 
2 | siti | prosess 
3 | boby | complete 

2.application_test

id | application_id | test_id | result
======================================
1 | 1 | 1 | 70
2 | 1 | 2 | 80
3 | 1 | 3 | 90
4 | 2 | 1 | 60
5 | 2 | 2 | 80
6 | 2 | 3 | 70
7 | 3 | 1 | 90
8 | 3 | 2 | 70
9 | 3 | 3 | 60
10| 3 | 4 | 80

更改爲MyQuery這樣的:

SELECT test_id, 
SUM(IF(app.status='complete',apt.result,0)) AS complete_sum, 
SUM(IF(app.status='process',apt.result,0)) AS process_sum 
FROM application_test AS apt 
JOIN application AS app ON app.id=apt.application_id 
GROUP BY apt.test_id 

和是這樣的:
test_id | SUM(result = complete) | SUM(result = proses) |
1 | 90 | 50
2 | 80 | 40
3 | 90 | 60
4 | 80 | 70

我quetion是:我怎樣才能得到全部或之後,我數行數一個查詢GROUPBY ..?例如,4總數

+0

你可以添加一個SQL小提琴? – harry

回答

0

使用子查詢,

Select *, Count(*) as total_rows From(
SELECT test_id, 
SUM(IF(app.status='complete',apt.result,0)) AS complete_sum, 
SUM(IF(app.status='process',apt.result,0)) AS process_sum 
FROM application_test AS apt 
JOIN application AS app ON app.id=apt.application_id 
GROUP BY apt.test_id) 
0

這是你想要的嗎?

SELECT (select count(*) from application_test) as total_row, 
test_id, 
SUM(IF(app.status='complete',apt.result,0)) AS complete_sum, 
SUM(IF(app.status='process',apt.result,0)) AS process_sum 
FROM application_test AS apt 
JOIN application AS app ON app.id=apt.application_id 
GROUP BY apt.test_id 
+0

嗯,我的意思是每個組的total_row = count,因爲你已經使用group by apt.test_id,count(*)會計算每個組的總數 – Webster

+1

Hy,韋伯斯特我認爲這不是總行數,而是每組數,我的排隊是Total行,但感謝您的回答 – b4dQuetions

+0

啊我得到了你,所以你想要什麼表的總行?請看我編輯的帖子 – Webster