2016-01-18 21 views
2

我的表看起来像这样:mysql:如何从一个中提取多个表并在每个中分组,然后合并为一个结果?

+------+------+------+ 
| prov | amnt | type | 
+------+------+------+ 
| on | 10 | 1 | 
| on | 10 | 1 | 
| on | 12 | 2 | 
| ab | 10 | 1 | 
| ab | 12 | 2 | 
| ab | 12 | 2 | 
| qc | 12 | 2 | 
| qc | 13 | 3 | 
| qc | 13 | 3 | 
+------+------+------+ 

我想返回一个表,其中,每个提供图片有按类型,每个类型的总和和计数,像这样分组摘要:

+------+-------+------+------+ 
| prov | total | type | count| 
+------+-------+------+------+ 
| on | 20 | 1 |  2| 
| on | 12 | 2 |  2| 
| ab | 10 | 1 |  1| 
| ab | 24 | 2 |  2| 
| qc | 12 | 2 |  1| 
| qc | 26 | 3 |  2| 
+------+-------+------+------+ 

基本上,如果我为每个省进行三次手动输入查询,我将通过三个不同的查询获得三个不同表中的数据。

SELECT prov, SUM(fine) AS total, code, COUNT(code) AS COUNT 
FROM table 
WHERE prov = 'on' 
GROUP BY code; 

    +------+-------+------+------+ 
    | prov | total | type | count| 
    +------+-------+------+------+ 
    | on | 20 | 1 |  2| 
    | on | 12 | 2 |  2| 
    +------+-------+------+------+ 

回答

0

添加provgroup by

SELECT prov, SUM(fine) AS total, code, COUNT(code) AS COUNT 
FROM table 
GROUP BY prov, code; 
0

也许你可以使用一个SQL合计,如:

SELECT *, COUNT(*) FROM tablename GROUP BY prov, type; 

有关组按功能的详细信息:see here

0

您可以通过省和类型需要组。以下是你需要什么:

select  
`prov`, sum(`amnt`) as `total`, count(*) as `count`, `type` 
group by `prov`, `type`; 
0

改变您的查询是:

SELECT prov, SUM(amnt) AS total, type, COUNT(type) AS COUNT 
FROM table 
GROUP BY prov, code; 
相关问题