2009-03-11 8 views
-1

Ich benutze MySQL.
Ich habe eine P_id, die in der Lage sein sollte, den maximalen Wert zu finden. Ich möchte die Summe von zwei Formeln zeigen, indem sie folgende:Wie kann ich Werte in einer MySQL-Abfrage summieren?

Then 

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

ich die folgende Funktion verwendet, aber es gibt mir eine Fehlermeldung:

    
> 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' 

Daraus ergibt sich:

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

Sie SQL bearbeiten konnte so tatsächlich lesbar es ist? :) – Kezzer

+0

Bitte posten Sie das tatsächliche Ergebnis, das Sie erhalten möchten. – Quassnoi

+0

Ich bin mir nicht sicher, ob ich verstehe ... Woher hast du das A = 178? Ich sehe S_val = 0 und Estimate = 0, also sollte max (pval) * S_val * Estimate auch = 0 sein? Es ist schwer zu verstehen, was du zu tun versuchst. – Seb

Antwort

2

Sie können Aggregatfunktionen nicht verschachteln - SELECT SUM(MAX(x)) wird immer Fehler.

Sie können den inneren Wert in einer Unterabfrage erhalten statt:

SELECT 
    SUM(maxpval * S_val * Estimate), 
    SUM(maxpval * P_val * Analyze) 
FROM 
    yourTable 
    JOIN (
    SELECT MAX(P_val) AS maxpval FROM yourTable 
) AS dt; 
Verwandte Themen