sql >> Database >  >> RDS >> Mysql

Hoe de helling in SQL te berekenen

De schoonste die ik kon maken:

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;

Het gebruikt Simple Linear Regression om de helling te berekenen.

Resultaat:

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

Elk databasesysteem lijkt een andere benadering te hebben voor het converteren van datums naar getallen:

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


  1. Het maken van een trigger voor het invoegen van een onderliggende tabel geeft een verwarrende fout

  2. Onjuiste syntaxis bij ''

  3. Hoe PostgreSQL op macOS te installeren

  4. Het standaardspoor verwijderen - Deel 3