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

Jaka jest poprawna składnia partycjonowania w SQL?

Łączna suma przy użyciu UDV:

select
dateOfCheckup,
duration,

-- use intermediate variable @cur_dur for not calculate this value twice
@cur_dur := ((case when duration like '% hour%' then substring_index(duration, ' hour', 1) * 60 else 0 end) +
(case when duration like '%min%' then substring_index(substring_index(duration, ' min', 1), ' ', -1) + 0 else 0 end)) as minutes,

-- check does current @year_month is equal to previous, continue or restart @cum_sum
CASE WHEN @year_month = date_format(dateOfCheckup, '%Y-%m')
     THEN @cum_sum := @cum_sum + @cur_dur
     ELSE @cum_sum := @cur_dur
     END total,

-- store current @year_month for to use with next row
@year_month := date_format(dateOfCheckup, '%Y-%m') monthOfCheckup

from patient, 

-- initialize variables which will be used
(SELECT @year_month:='', @cum_sum:=0, @cur_dur:=0) variables

-- the rows must be processed in definite order
ORDER BY dateOfCheckup

skrzypce

Kolejność kolumn wyjściowych jest krytyczna (obliczenia w kolumnach wyjściowych w wierszu są wykonywane ściśle w kolejności, w jakiej zostały zapisane). Ale nie ma znaczenia, czy ten przykład jest używany jako podzapytanie, czy do danych wyjściowych uzyskuje się dostęp za pomocą nazw kolumn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy MySQL powinien mieć swoją strefę czasową ustawioną na UTC?

  2. Jak sprawdzić czy limit został użyty w mysql?

  3. Jak dynamicznie pobierać zawartość w polu tekstowym, w oparciu o wybór rozwijany w php

  4. WYBIERZ i wypisz dzieci i rodziców

  5. Jak utworzyć hierarchiczne rekurencyjne zapytanie MySQL?