2009-03-11 22 views
-1

MySQL kullanıyorum.
Maksimum değeri bulabilen bir P_id var. Ben izleyerek iki formüller toplamını göstermek istiyorum: MySQL sorgusundaki değerleri nasıl toplayabilirim?

Then 

      Sum(max(pval)*S_val*Estimate) 
      Sum(max(pval)*P_val*Analyze) 
    Finally sum the Both above 

ben aşağıdaki işlevi kullanılır ama bana bir hata veriyor:

    :

        
    > id Display P_id P_val Analyze S_id S_val Estimate  
    > 70 Data1 1  1  178  0  0  0  
    > 71 Data2 1  0  0  1  3  50 
    
    SELECT SUM(max(pval)*S_val*Estimate) + Sum(max(pval)* P_val * Analyze) from DATA where pid='1' 
    

    Bu sonuçlanır

  • A: 1 * 178
  • B: 1 * 3 * 50
  • Sum (A + B): 328
+0

Düzenlemek olabilir mi? :) – Kezzer

+0

Lütfen almak istediğiniz gerçek sonucu gönderin. – Quassnoi

+0

Anladığımdan emin değilim ... A = 178'i nereden buldunuz? S_val = 0 ve Estimate = 0'ı görüyorum, bu yüzden max (pval) * S_val * Tahmin = 0 olmalı? Ne yapmaya çalıştığını anlamak zor. – Seb

cevap

2

yapabilirsiniz iç içe toplama işlevleri - SELECT SUM(MAX(x)) olacak hep hatası.

Onun yerine bir alt sorguda iç değerini elde edebilirsiniz: Bunu okunabilir aslında SQL

SELECT 
    SUM(maxpval * S_val * Estimate), 
    SUM(maxpval * P_val * Analyze) 
FROM 
    yourTable 
    JOIN (
    SELECT MAX(P_val) AS maxpval FROM yourTable 
) AS dt; 
İlgili konular