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

SQL/MySQL:podziel wartość ilości na wiele wierszy według daty

Jeśli zdecydujesz się na aktualizację do MySQL 8.0, oto rekurencyjne CTE, które wygeneruje listę wszystkich dni między planning_start_date i planning_end_date wraz z wymaganą dzienną ilością:

WITH RECURSIVE cte AS (
    SELECT planning_start_date AS date, 
           planning_end_date, 
           quantity / (DATEDIFF(planning_end_date, planning_start_date) + 1) AS daily_qty
    FROM test
    UNION ALL
    SELECT date + INTERVAL 1 DAY, planning_end_date, daily_qty
    FROM cte
    WHERE date < planning_end_date
)
SELECT `date`, daily_qty
FROM cte
ORDER BY `date`

Demo na dbfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wykorzystanie PDO i sesji do stworzenia formularza logowania

  2. Błąd składni Railsów i MySQL z wieloma instrukcjami SQL w bloku wykonania

  3. MySQL 5.7 nie pasuje do słów składających się z dwóch chińskich znaków

  4. Jak budować komentarze w wątkach z 1 lub 2 zapytaniami?

  5. Usuwanie zduplikowanych wierszy z tabeli MySql