2010-10-26 16 views

cevap

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 

YA hatta

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 ancak iç seçimdeki bölünmeyi yaparak belki daha da basitleştirebilirsiniz. –

+3

Gelecek SQL standardının destekleyebileceğini merak ediyorum ** alt soruyu önlemek için aynı seçim listesinde diğer adı kullan ** –

1

sen daha adil bir sorguda değerini (a+b+c)/3 gerekiyorsa ve SQL lehçesi bir görünümü kullanarak düşünebilirsiniz, görüşlerini destekler.

Aşağıdaki kod (a+b+c)/3 değerini içeren ek bir sütun MY_TABLE_NAME + tablonun tüm sütunlarını içeren bir Görünüm oluşturmak için MySQL'da kullanılabilir.

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`; 

Aşağıdaki kod

yalnızca a, b ve c + değeri (a+b+c)/3 içeren ek bir sütun sütun içeren bir görünüm oluşturmak için MySQL kullanılabilir.
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`; 

Aşağıdaki kod

sadece değerini (a+b+c)/3 içeren MySQL Görünüm oluşturmak için MySQL kullanılabilir. Görünümünüzü oluşturduktan sonra, seçtiğiniz sorgunuzda tablo yerine görünümü kullanın.

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

görünümü MY_TABLE_NAME_LIMITED_VIEW oluşturulan varsayarsak, ve ayrıca değerleri yaparsın a, b ve C dahil etmek gerekir: görünümü MY_TABLE_NAME_AVERAGE_VIEW oluşturulan varsayarsak


, ama bu işte SELECT deyimi yerini alabilir

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