Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak obliczyć nachylenie w SQL

Najczystszy, jaki mogłem zrobić:

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;

Używa Prosta regresja liniowa aby obliczyć nachylenie.

Wynik:

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

Każdy system baz danych wydaje się mieć inne podejście do konwersji dat na liczby:

  • MySQL: TO_SECONDS(date) lub TO_DAYS(date)
  • Wyrocznia: TO_NUMBER(TO_CHAR(date, 'J')) lub date - TO_DATE('1','yyyy')
  • Serwer MS SQL: CAST(date AS float) (lub odpowiednik 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. Import i eksport bazy danych mysql w wierszu poleceń superszybko

  2. Silnik magazynu dla tabeli nie obsługuje naprawy. InnoDB czy MyISAM?

  3. Użyj parametru w funkcji przekazanej do google.setOnLoadCallback();

  4. Typy w MySQL:BigInt(20) vs Int(20)

  5. Wyzwalacz w mysql powodujący błąd