“GROUP BY 1” SQL cümlesi ne anlama geliyor?


205

Nerede Birisi bana bir SQL sorgusu gönderilen GROUP BYfıkra açıklamada oluşuyordu: GROUP BY 1.

Bu bir yazım hatası olmalı, değil mi? Diğer sütuna 1 sütun verilmez. Bu ne anlama geliyor? Bunun bir yazım hatası olması gerektiğini varsayabilir miyim?


6
Bu bir yazım hatası değil, sonuç
kümenizin

9
Bu sözdiziminin taşınabilir olmadığını unutmayın. MySQL dışındaki veritabanlarında farklı davranacaktır. Örneğin Oracle'da sabit olarak kabul edilir.
Russell Reed

2
@RussellReed Evet. maalesef (bir takma ad kullanmak bazen çok yararlı olduğu için) ansi sql sütun sıralaması ile gruplandırmaya izin vermez. Bunun nedeni grubun projeksiyondan önce gerçekleşmesidir. Ama sonra .. ifadeleri onlarca satırla gruplandırdığımızda ... son sql ifadesinde onlarca satırın mutlakları ile sonuçlanırız .
javadba

Yanıtlar:


233

Adı ne olursa olsun, ilk sütuna göre gruplandırmak anlamına gelir. Aynı şeyi ile yapabilirsiniz ORDER BY.


74
SELECT account_id, open_emp_id
         ^^^^        ^^^^
          1           2

FROM account
GROUP BY 1;

Yukarıdaki sorgu hangisi olduğunu GROUP BY 1ifade eder .first column in select statementaccount_id

Ayrıca şunu da belirtebilirsiniz ORDER BY.

Not: ORDER BY ve GROUP BY içindeki numara her zaman 0 ile değil 1 ile başlar.


25

Alan adına göre gruplamaya ek olarak, sıralı olarak veya alanın tablo içindeki konumuna göre de gruplayabilirsiniz. 1, birinci alana karşılık gelir (adından bağımsız olarak), 2, ikincisidir vb.

Tablo / görünüm yapısı değişebileceğinden, belirli bir şey üzerinde gruplandırıyorsanız bu genellikle kötü bir şekilde tavsiye edilir. Ayrıca, tablo alanlarını ezberlemediyseniz SQL sorgunuzun ne yaptığını hızlı bir şekilde anlamak zor olabilir.

Benzersiz bir kümeye geri dönüyorsanız veya hızlı bir şekilde geçici bir arama gerçekleştiriyorsanız, bu, yazmayı azaltmak için kısa bir sözdizimidir. Sorguyu bir noktada tekrar çalıştırmayı planlıyorsanız, gelecekteki karışıklık ve beklenmeyen komplikasyonlardan (şema değişiklikleri nedeniyle) kaçınmak için bunları değiştirmenizi tavsiye ederim.


10
+1 "bunu yapma" için ve ben bunu önlemek için en iyi neden okunabilir olmaması olduğunu eklemek istiyorum.
Yuck


5

Bu, seçim cümlenizde 1. sütuna göre sql grubu anlamına gelir, bunu her zaman GROUP BY 1birlikte kullanırız ORDER BY 1, ayrıca bu şekilde de kullanabilirsiniz GROUP BY 1,2,3.., elbette bizim için uygundur, ancak bu koşula dikkat etmeniz gerekir, sonuç sizin bazıları sütunlarınızı değiştirdiyse ve görselleştirilmemişse


4

Bu, yan tümcesine göre gruptan sonra koyduğunuz sütun konumuna göre gruplandırılır.

örneğin, ' SELECT SALESMAN_NAME, SUM(SALES) FROM SALES GROUP BY 1' komutunu çalıştırırsanız gruplandırır SALESMAN_NAME.

Bunu yapmanın bir riski, ' Select *' çalıştırırsanız ve herhangi bir nedenle tabloyu sütunlarla farklı bir düzende yeniden oluşturursanız, beklediğinizden farklı bir sonuç verir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.