データベース

データベースに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし)
SQLで中央値を出すときの
投稿日時: 19/11/26 17:09:32
投稿者: TATSUYA.ich

SELECT Avg(V) AS Median
FROM (SELECT Max(修正後単価) AS V
      FROM (SELECT TOP 50 PERCENT グループ.修正後単価
            FROM グループ ORDER BY 修正後単価)
      WHERE (([グループ].[GROUP])="GROUP1")
      UNION ALL
      SELECT Min(修正後単価)
      FROM (SELECT TOP 50 PERCENT グループ.修正後単価
            FROM グループ ORDER BY 修正後単価 DESC)) AS [%$##@_Alias]
            WHERE (([グループ].[GROUP])="GROUP1");
 
以上のように、SQLで中央値をだそうと考えているのですが、where句での抽出条件を
どこに記載すればよいかわかりません。
 
全体又はSELECT毎に式を入れてみましたが、いずれもエラーとなります。
 
申し訳ございませんが、どなたか解決策をご教示くださいませんでしょうか。
 
以上、よろしくお願い申し上げます。

回答
投稿日時: 19/11/26 18:42:49
投稿者: よろずや

こちらですね。
https://hatenachips.blog.fc2.com/blog-entry-336.html
 
 

SELECT Avg(V) AS Median
FROM (SELECT Max(修正後単価) AS V
      FROM (SELECT TOP 50 PERCENT グループ.修正後単価
            FROM グループ
      WHERE (([グループ].[GROUP])="GROUP1")
            ORDER BY 修正後単価)
      UNION ALL
      SELECT Min(修正後単価)
      FROM (SELECT TOP 50 PERCENT グループ.修正後単価
            FROM グループ
            WHERE (([グループ].[GROUP])="GROUP1")
            ORDER BY 修正後単価 DESC));

投稿日時: 19/11/27 13:18:13
投稿者: TATSUYA.ich

こんにちは。
 
早急にご回答下さり有難うございました!
本当基本的なことすらわかっておらずお手間をおかけして申し訳ございませんでした。
 
頂いた内容で対応したところ、無事動作致しました。
 
有難うございます。
 
今後とも何かあればよろしくお願い申し上げます。