Bir şeyleri düzleştirmek için biraz yardıma ihtiyacım var, bunun kolay bir soru olduğunu biliyorum, ancak SQL'de biraz kafa karıştırıcı bir şey.GROUP BY/toplu işlev karmaşası SQL'de
Bu SQL sorgusu Oracle'da 'GROUP GROUP ifadesi değil' hatası veriyor. Anladığım kadarıyla, bildiğim gibi, bir tuple özniteliğine göre gruplandırdığımda, artık başka bir özelliğe erişemiyorum.
SELECT *
FROM order_details
GROUP BY order_no
Ancak bu bir yapılan her sipariş için ORDER_DETAILS birden küpe, olduğunu varsayarsak ....
SELECT SUM(order_price)
FROM order_details
GROUP BY order_no
Sadece bu benim anlayış somut işliyor Ben grup dizilerini kez order_no'ya göre, gruptaki her bir tuple için order_price özniteliğine hala erişebiliyorum, ancak sadece bir toplama işlevi kullanıyor olabilirim?
Başka bir deyişle, SELECT deyiminde kullanıldığında toplu işlevler, 'SELECT order_no' ifadesini kullanarak bir hatayı atacak olan 'gizli' öznitelikleri görmek için grubun ayrıntılarını inceleyebilir?
Bunu netleştirmedeki yardımlarınız için teşekkürler, bu soruya Google'da yanıt bulmakta güçlük çektim. Eğer GROUP BY kullandığınızda Chris
Tamam, GROUP BY yürütüldükten sonra, belirli bir order_no için tüm bireysel tuples hala birleştirilmiş işlevler tarafından erişilebilir. Yani, SUM işlevi, bu tuplelar order_no ile birlikte gruplandırılmış olsa bile, her bir tuple'ın order_price özniteliğine erişmeye devam edebilir mi? – Chris
@ Chris: evet, daha fazla veya daha az. Tablodaki satırları gruplara ayırarak GROUP BY'yi düşünebilirsiniz; her grup, GROUP BY deyiminde listelenen sütunlar için aynı değerler kümesine sahiptir. Agregalar daha sonra, gruptaki satırlar üzerinden hesaplanan agrega ile belirtilen sütunlardan herhangi birinde çalışır. Sonuç, GROUP BY sütun değerleri artı ilişkili agregatlarla, grup başına bir satırdan oluşur. Hummm ... Umarım bu berraktır ... –
Evet, söyleyebildiğim kadar tamamen temizledim. Çok teşekkürler Jonathan ve cevap veren diğer adamlara teşekkürler! – Chris