Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara menghitung kemiringan di SQL

Yang paling bersih yang bisa saya buat:

SELECT
    Scores.Date, Scores.Keyword, Scores.Score,
    (N * Sum_XY - Sum_X * Sum_Y)/(N * Sum_X2 - Sum_X * Sum_X) AS Slope
FROM Scores
INNER JOIN (
    SELECT
        Keyword,
        COUNT(*) AS N,
        SUM(CAST(Date as float)) AS Sum_X,
        SUM(CAST(Date as float) * CAST(Date as float)) AS Sum_X2,
        SUM(Score) AS Sum_Y,
        SUM(CAST(Date as float) * Score) AS Sum_XY
    FROM Scores
    GROUP BY Keyword
) G ON G.Keyword = Scores.Keyword;

Ini menggunakan Regresi Linier Sederhana untuk menghitung kemiringan.

Hasil:

Date         Keyword        Score         Slope
2012-01-22   water bottle   0,010885442   0,000334784345222076
2012-01-23   water bottle   0,011203949   0,000334784345222076
2012-01-24   water bottle   0,008460835   0,000334784345222076
2012-01-25   water bottle   0,010363991   0,000334784345222076
2012-01-26   water bottle   0,011800716   0,000334784345222076
2012-01-27   water bottle   0,012948411   0,000334784345222076
2012-01-28   water bottle   0,012732459   0,000334784345222076
2012-01-29   water bottle   0,011682568   0,000334784345222076

Setiap sistem basis data tampaknya memiliki pendekatan berbeda untuk mengonversi tanggal menjadi angka:

  • MySQL: TO_SECONDS(date) atau TO_DAYS(date)
  • Oracle: TO_NUMBER(TO_CHAR(date, 'J')) atau date - TO_DATE('1','yyyy')
  • MS SQL Server: CAST(date AS float) (atau setara CONVERT )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat bidang tanggal dari hari, bulan, tahun di MySQL

  2. Permintaan GTFS untuk mencantumkan semua waktu keberangkatan dan kedatangan antara dua nama perhentian

  3. Memperbarui skema tabel tanpa memengaruhi data di Laravel

  4. Membuat perubahan pada beberapa catatan berdasarkan perubahan satu catatan dengan SQL

  5. KESALAHAN di PDO :Panggil ke fungsi anggota prepare() pada null