Saya memiliki struktur tabel berikut mis.

id  |  group  |  parent  |  value
1       123        1         10
2       123        1         25
3       224        1         12
4       224        1         22
5       225        2         18
6       225        2         10
7       326        2         18
8       326        2         35

Sekarang saya perlu mengambil jumlah tertinggi dari setiap grup dan menggabungkan hasil per kolom induk sehingga hasil yang diinginkan akan seperti berikut:

group  |  parent  |   value
123         1          47
225         2          53

Saya dapat mengelompokkannya berdasarkan orang tua tetapi tidak tahu cara mengelompokkannya berdasarkan grup di dalam orang tua.

Terima kasih

-1
Elizabeth Dimova 19 Mei 2015, 06:24
GROUP BY parent, group
 – 
PM 77-1
19 Mei 2015, 06:28
OK tapi saya perlu mencari total nilai tertinggi juga :(
 – 
Elizabeth Dimova
19 Mei 2015, 06:30
2
Apakah hasil contoh benar-benar hasil yang Anda inginkan diberikan contoh data? Saya tidak mengerti bagaimana Anda mendapatkan nilai-nilai itu: 47, 53, dll.
 – 
enl8enmentnow
19 Mei 2015, 06:31
Misalnya 47 adalah jumlah dari 25 dan 22 .. nilai dengan ID 2 dan 4 karena merupakan nilai TERTINGGI dalam grup/induk. Semoga ini lebih masuk akal sekarang. Terima kasih
 – 
Elizabeth Dimova
19 Mei 2015, 06:35

1 menjawab

Jawaban Terbaik

Gunakan kueri bersarang seperti ini:

select
    parent,
    sum(max_of_group_value)
from (
    select
        parent,
        group
        max(value) as max_of_group_value)
    from <table>
    group by
        parent,
        group
) t
group by
    parent;

Atau, gunakan CTE untuk subquery sebagai berikut:

;with t as (
    select
        parent,
        group
        max(value) as max_of_group_value)
    from <table>
    group by
        parent,
        group
)
select
    parent,
    sum(max_of_group_value)
from t
group by
    parent;

Sekarang perhatikan baik-baik presentasi kueri apa pun yang Anda inginkan; bukankah kodenya ditulis persis seperti yang Anda jelaskan masalah di (gabungan pertanyaan dan komentar) Anda? Itulah kunci penulisan kode yang jelas benar, dan dapat dibaca.

1
Pieter Geerkens 19 Mei 2015, 13:48
Hmm intellisense mengatakan "nama kolom tidak valid untuk semua kolom. Saya juga tidak melihat pernyataan FROM tablename ... maaf untuk pertanyaan bodoh tetapi di mana saya harus meletakkan bagian itu? Thx
 – 
Elizabeth Dimova
19 Mei 2015, 06:51
Entah bagaimana saya mengatur kode agar berfungsi tetapi belum selesai karena saya perlu menampilkan kolom grup juga.
 – 
Elizabeth Dimova
19 Mei 2015, 07:08
SELECT sub.parent, SUM(MaxValue) FROM( SELECT data.group, data.parent, groupedValue.MaxValue FROM MyTable AS data INNER JOIN (SELECT group, MAX(value) AS MaxValue FROM MyTable GROUP BY group) groupedValue ON data.group = groupedTime.group AND data.value = groupedTime.MaxValue ) sub GROUP BY induk
 – 
Elizabeth Dimova
19 Mei 2015, 07:08
- Untuk Induk 1, ada 2 grup, 123 dan 224. Bagaimana Anda memutuskan untuk menampilkan 123 dan bukan 224. Apakah Anda menginginkan nilai grup minimum?
 – 
ughai
19 Mei 2015, 07:37
Saya pikir itu adalah nilai grup pertama mis. untuk orang tua 1 saya dapat menunjukkan grup 123 dengan ID = 1. Terima kasih
 – 
Elizabeth Dimova
19 Mei 2015, 07:41