Ben bir tablo var: "Kimliği adı c_counts f_counts"MySQL'de SUM() SİPARİŞİ NASIL YAPILIR?
ve ben sum(c_counts+f_counts)
bütün rekoru sipariş etmek istiyorum ama bu işe yaramazsa:
SELECT * FROM table ORDER BY sum(c_counts+f_counts) LIMIT 20;
Ben bir tablo var: "Kimliği adı c_counts f_counts"MySQL'de SUM() SİPARİŞİ NASIL YAPILIR?
ve ben sum(c_counts+f_counts)
bütün rekoru sipariş etmek istiyorum ama bu işe yaramazsa:
SELECT * FROM table ORDER BY sum(c_counts+f_counts) LIMIT 20;
don'y unutursanız o gruplandırılmış (yani SUM) alanlarını ve gruplandırılmamış alanları karıştırıyorsunuz, GRUP BY gruplandırılmamış alanlardan biri ile.
SELECT Field1, SUM(something) AS Field2
FROM tablename
GROUP BY Field1
ORDER BY Field2
Ve her zaman böyle bir türetilmiş sorgu yapabilirsiniz:
SELECT SUM(something) AS fieldname
FROM tablename
ORDER BY fieldname
VEYA bu:
bu deneyin
SELECT
f1, f2
FROM
(
SELECT SUM(x+y) as f1, foo as F2
FROM tablename
GROUP BY f2
) as table1
ORDER BY
f1
Birçok seçenek mevcut!
Bu yerine group by
maddesini kullanmak zorunda olacak, sen order by
fıkra işe yaramaz yani
SELECT ID,NAME, (C_COUNTS+F_COUNTS) AS SUM_COUNTS
FROM TABLE
ORDER BY SUM_COUNTS LIMIT 20
SUM fonksiyonu, tüm satırların yukarı katacak yaparız.
bu gerçekten bu iki alanın toplamına göre sıralamak için çalışacaktır. Toplamı "toplamı" olarak "toplam" okuyordum, ama bence doğru yorumunuz var. – user158017
GROUP BY deyimi olmadan, tüm satırlar tek bir satıra kadar tüm satırları döndürecek, böylece sorgunuz gerçekten çalışmaz. Eger adina göre gruplandiysaniz ve adina göre sifirlandiysaniz (c_counts + f_counts), bazi faydalı sonuçlar alabilirsiniz. Ama sen bir şeyleri gruplandırmalısın.
Burada gördüğüm sorun "toplam" bir toplu işlevdir. İlk olarak, sorgunun kendisini düzeltmeniz gerekir.
.
Select *
from (query above) a
order by total
EDIT:
Select sum(c_counts + f_counts) total, [column to group sums by]
from table
group by [column to group sums by]
sonra, bunu sıralayabilir Ama Virat tarafından yayını görebilecek. Belki de istediğiniz şey, bir grup üzerinde toplam alanlarınızın toplamı değil, yalnızca her bir kayıt için bu alanların toplamıdır. Bu durumda Virat doğru çözüme sahiptir.
Alt sorgu gereksizdir - sadece ilk sorguya 'SİPARİŞ BY 'ekleyin. Bu örnekte: 'total olarak SİPARİŞ' ya da toplam DESC İLE SİPARİŞ. Ayrıca bir “LIMIT” e ihtiyacınız varsa, daha sonra gider. –
Bu deneyebilirsiniz:
SELECT *
FROM table
ORDER BY (c_counts+f_counts)
LIMIT 20
evet, tüm kayıtlar bazı alanların toplamına sırasını istiyorum. bu çalışmalar: SELECT sum (c_counts + f_counts) FROM tablosundan GROUP BY name LIMIET 20; Teşekkürler! – lovespring
Arkadaşım sadece hayatımı çok daha kolaylaştıracak! Çağlar için benzer bir sorguyla mücadele ediyordum ve doğru bir şekilde alamadım - sadece pastamı kurtardın! Çok teşekkürler! –
Ayrıca, alan1, toplam (alan) tablo sırala 2'yi SEÇEBİLİR (2 temelde ikinci alan anlamına gelir), etkileşimli kullanımda uygundur, ancak gerçek kod için bunu tavsiye etmem. –