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
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
GROUP BY parent, group