如何获取每行求和mysql



Hy我有两个表
1.应用程序
id | name | status
====================
1 | morvick | complete
2 | siti | prosess
3 | boby | complete
`

2.应用程序测试
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
我的问题是:
===============
1.如何在状态完成的每个test_id上获得sum(结果)
2.如何在每个test_id上获得sum(结果),其中status proses

例如,如下所示:
test_id | SUM(result = complete) | SUM(result = proses) |
1 | 90 | 50
2 | 80 | 40
3 | 90 | 60
4 | 80 | 70

尝试以下查询-

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

您可以尝试两次查询来获得结果的总和

SELECT test_id , SUM (result) 
FROM application a 
JOIN application_test t 
ON t.test_id = a.id 
WHERE a.status = 'complete'
GROUP BY test_id 
SELECT test_id , SUM (result) 
FROM application a 
JOIN application_test t 
ON t.test_id = a.id 
WHERE a.status = 'prosess'
GROUP BY test_id 

如果你想在一个查询

SELECT test_id, 
SUM(IF(a.status='complete',result,0)) Completed , 
SUM(IF(a.status='process',result,0)) Process  
FROM  application  a 
JOIN application_test t
ON a.id=t.application_id 
GROUP BY t.test_id

最新更新