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 LINK FOR SAMPLE EXECUTIONです。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

@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 に答える
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 に答える