1

私はこのようなテーブルを持っていますPatients

  PatientName    DateOftest    Eye     L1    L2    L3    L4     L5
  ----------------------------------------------------------------
    Mike         17-02-2009     L      23    25    40    32     30
    Mike         17-02-2009     R      25    30    34    35     24
    Bill         08-03-2006     L      20    24    30    24     25
    Bill         08-03-2006     R      18    25    27    30     24

今、以下の私のクエリは意味を見つけます

SELECT 
   PatientName, DateOfTest,    
   (MAX(L1) + MAX(L2) + MAX(L3) + MAX(L4) + MAX(L5))/4 as Mean, 
   SQRT(POW(L1 - Mean, 2) + POW(L2 - Mean, 2) + POW(L3 - Mean, 2) + POW(L4 - Mean, 2)  + POW(L5 - Mean, 2)) AS Standard Deviation, 
   'Binocular' Eye 
FROM 
   Patients 
GROUP BY  
   PatientName, DateOfTest;

上記のクエリは、平均を保存していないため間違っています。コードの標準偏差を見つけるために平均を保存する方法はありますか。非常に長いクエリとより多くのレコードがあるため、質問しています。

4

2 に答える 2

2

平均を保存してクエリで再利用するには、Common Table Expressionを使用する方法があります。CTE をテーブルに結合して、計算された平均を複数回使用できます。

次の行を理解していなかったことを認めます...

SQRT(POW(L1-Mean,2)+POW(L2-Mean,2)+POW(L3-Mean,2)+POW(L4-Mean,2)+POW(L5-Mean,2))
as Standard Deviation, 'Binocular' Eye

...しかし、以下のクエリは、計算された平均をその行に統合する方法を示しています。これには、追加の作業も必要になると思います。

--This is the CTE to calculate the mean
WITH Mean_CTE AS
(
  SELECT PatientName, DateOfTest,
    (MAX(L1) + MAX(L2) + MAX(L3) +  MAX(L4) + MAX(L5))/4 AS [Mean]
  FROM Patients
  GROUP BY PatientName, DateOfTest
)
--This is the original query
SELECT Patients.PatientName, Patients.DateOfTest, Mean_CTE.Mean AS Mean, 
  SQRT(POW(L1-Mean_CTE.Mean,2)+POW(L2-Mean_CTE.Mean,2)+POW(L3-Mean_CTE.Mean,2)
  +POW(L4-Mean_CTE.Mean,2)+POW(L5-Mean_CTE.Mean,2)) as Standard Deviation, 
  'Binocular' Eye
FROM Patients
INNER JOIN Mean_CTE --This is where you join the two
ON Patients.PatientName = Mean_CTE.PatientName
    AND Patients.DateOfTest = Mean_CTE.DateOfTest
GROUP BY Patients.PatientName, Patients.DateOfTest, Mean_CTE.Mean;
于 2013-02-12T04:44:32.610 に答える
0

数式の結果を格納するテーブルに CALCULATED 列を追加する可能性についてはどうですか??

これはかなり単純な概念であり、数式の値をソートします。

http://msdn.microsoft.com/en-us/library/ms191250(v=sql.105).aspx

于 2013-02-12T05:59:39.457 に答える