Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL:Tampilkan rata-rata dan min/maks dalam standar deviasi

Untuk menghitung simpangan baku, Anda perlu mengulangi semua elemen, jadi tidak mungkin melakukan ini dalam satu kueri. Cara malasnya adalah melakukannya dalam dua lintasan:

DECLARE
    @Avg int,
    @StDev int

SELECT @Avg = AVG(Sales), @StDev = STDEV(Sales)
FROM tbl_sales
WHERE ...

SELECT AVG(Sales) AS AvgSales, MAX(Sales) AS MaxSales, MIN(Sales) AS MinSales
FROM tbl_sales
WHERE ...
AND Sales >= @Avg - @StDev * 3
AND Sales <= @Avg + @StDev * 3

Opsi sederhana lainnya yang mungkin pekerjaan (cukup umum dalam analisis data ilmiah) adalah dengan hanya menjatuhkan x minimum dan maksimum nilai, yang berfungsi jika Anda memiliki banyak data untuk diproses. Anda dapat menggunakan ROW_NUMBER untuk melakukan ini dalam satu pernyataan:

WITH OrderedValues AS
(
    SELECT
        Sales,
        ROW_NUMBER() OVER (ORDER BY Sales) AS RowNumAsc,
        ROW_NUMBER() OVER (ORDER BY Sales DESC) AS RowNumDesc
)
SELECT ...
FROM tbl_sales
WHERE ...
AND Sales >
(
    SELECT MAX(Sales)
    FROM OrderedValues
    WHERE RowNumAsc <= @ElementsToDiscard
)
AND Sales <
(
    SELECT MIN(Sales)
    FROM OrderedValues
    WHERE RowNumDesc <= @ElementsToDiscard
)

Ganti ROW_NUMBER dengan RANK atau DENSE_RANK jika Anda ingin membuang sejumlah unik . tertentu nilai.

Di luar trik sederhana ini, Anda mulai mendapatkan beberapa statistik yang cukup berat. Saya harus berurusan dengan jenis validasi yang serupa dan itu terlalu banyak materi untuk posting SO. Ada ratusan algoritme berbeda yang dapat Anda sesuaikan dengan selusin cara berbeda. Saya akan mencoba membuatnya tetap sederhana jika memungkinkan!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Format waktu sebagai Waktu Militer 24 jam?

  2. Perbarui kolom hitungan dari data di tabel lain

  3. Hubungan Satu ke Satu dengan Kunci Utama yang Berbeda dalam Kode EF 6.1 Pertama

  4. Ukuran file log sangat besar

  5. Mengekspor hasil kueri ke file dengan cepat