2010-10-26 4 views

Antwort

10
SELECT 
    Result/3 AS V, 
    MIN(Result/3) as Min, 
    MAX(Result/3) as Max 
FROM 
(
    SELECT (a+b+c) AS Result from Table 
) AS outerTable 

oder sogar

SELECT 
    Result AS V, 
    MIN(Result) as Min, 
    MAX(Result) as Max 
FROM 
(
    SELECT (a+b+c)/3 AS Result from Table 
) AS outerTable 
+0

+1 aber Sie könnten vielleicht noch weiter vereinfachen, indem Sie die Division in der inneren Auswahl. –

+3

Ich frage mich, zukünftige SQL-Standard kann unterstützen ** Verwenden Sie Alias ​​in derselben Auswahlliste, um Unterabfrage zu vermeiden ** –

1

Wenn Sie den Wert (a+b+c)/3 in mehr als nur eine Abfrage und SQL-Dialekt unterstützt Ansichten, könnte man mit einem Blick zu betrachten.

Der folgende Code kann in MySQL verwendet werden, um eine Ansicht zu erstellen, die alle Spalten der Tabelle MY_TABLE_NAME + eine zusätzliche Spalte enthält, die den Wert (a+b+c)/3 enthält.

CREATE ALGORITHM = UNDEFINED 
SQL SECURITY DEFINER VIEW `MY_TABLE_NAME_FULL_VIEW` AS 
SELECT MY_TABLE_NAME.*, (a+b+c)/3 AS Average 
    FROM `MY_TABLE_NAME`; 

Der folgende Code kann in MySQL verwendet werden, um eine Ansicht zu erzeugen, die a, b und c + eine zusätzliche Spalte nur die Spalten enthält, die den Wert enthält (a+b+c)/3.

CREATE ALGORITHM = UNDEFINED 
SQL SECURITY DEFINER VIEW `MY_TABLE_NAME_LIMITED_VIEW` AS 
SELECT a, b, c, (a+b+c)/3 AS Average 
    FROM `MY_TABLE_NAME`; 

Der folgende Code kann in MySQL verwendet werden, um einen Blick in MySQL zu erstellen, die (a+b+c)/3 nur den Wert enthält.

Nachdem Sie Ihre Ansicht erstellt haben, verwenden Sie die Ansicht anstelle der Tabelle in Ihren ausgewählten Abfragen.


Angenommen, Sie Ansicht erstellt MY_TABLE_NAME_AVERAGE_VIEW, könnten Sie Ihre SELECT Aussage mit diesem ersetzen:

SELECT Average AS V, MIN(Average) AS Min, MAX(Average) AS Max 
FROM MY_TABLE_NAME_AVERAGE_VIEW; 

Angenommen, Sie Ansicht erstellt MY_TABLE_NAME_LIMITED_VIEW, und Sie müssen auch Werte enthalten a, b und C, könnten Sie Ersetzen Sie Ihre SELECT Anweisung mit dieser:

SELECT a, b, c, Average AS V, MIN(Average) AS Min, MAX(Average) AS Max 
FROM MY_TABLE_NAME_LIMITED_VIEW; 
Verwandte Themen