sql >> Databáze >  >> RDS >> Mysql

Jak vypočítat sklon v SQL

Nejčistší, co jsem mohl udělat:

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;
 

Používá Jednoduchá lineární regrese pro výpočet sklonu.

Výsledek:

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

Zdá se, že každý databázový systém má jiný přístup k převodu dat na čísla:

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


  1. Spring Boot JPA MySQL:Nepodařilo se určit vhodnou třídu ovladače

  2. SQL Server:Je možné vkládat do dvou tabulek současně?

  3. Časové razítko Postgres now() se nemění, když skript funguje

  4. Gem Ruby mysql2 zkompilován pro špatnou verzi klientské knihovny mysql