1

这些是我的桌子

C_ID  USAGE B_ID
4     100   2
2     400   1
3     200   2
1     300   1

B_ID  ZONE_NAME
2     central
1     west

这是我的查询,

select 
    sum(usage)  
from 
(
    select 
        usage_679.c_id,
        usage_679.b_id,usage_679.usage,
        zone_679.zone_name 
    from usage_679 inner join zone_679
        on zone_679.b_id = usage_679.b_id
)
where zone_name like 'w%';

问题是它只能打印与西部区域相关的数据。我想打印两个区域名称以及各个区域的总使用量。

预期产出

zone_name  sum(usage)
1            700
2            300
4

3 回答 3

1

这是示例执行的SQL FILLDE 链接。你不需要WHERE条件。您可以通过GROUP BY

select 
    sum(usage),zone_name  
from 
(
    select 
        usage_679.c_id,
        usage_679.b_id,usage_679.usage,
        zone_679.zone_name 
    from usage_679 inner join zone_679
        on zone_679.b_id = usage_679.b_id
)
group by  zone_name

输出

| SUM(USAGE) | ZONE_NAME |
--------------------------
|        700 |      west |
|        300 |   central |

即使这样也可以:(不需要 2 SELECTS)

SELECT
    sum(USAGE),zone_name

    FROM usage_679 INNER JOIN zone_679
        ON zone_679.b_id = usage_679.b_id

GROUP BY  zone_name

输出:

| SUM(USAGE) | ZONE_NAME |
--------------------------
|        700 |      west |
|        300 |   central |
于 2013-01-16T04:55:42.940 回答
0

您可以使用GROUP BY子句来获得结果。请试试。

select 
    zone_679.zone_name,
    zone_679.b_id,
    SUM(usage_679.usage)
from usage_679 inner join zone_679
    on zone_679.b_id = usage_679.b_id 
group by zone_679.zone_name, zone_679.b_id;
于 2013-01-16T04:40:24.370 回答
0

只需添加@priyanks 答案...如果您只想要西方的结果,则添加一个having子句,即

SELECT
sum(USAGE),zone_name

FROM usage_679 INNER JOIN zone_679
    ON zone_679.b_id = usage_679.b_id

GROUP BY  zone_name
HAVING zone_name like 'w%' --Filter added for result
于 2013-01-16T05:29:53.290 回答