sql >> Database >  >> RDS >> Mysql

Wat is de juiste syntaxis voor partitionering in SQL?

Cumulatieve som met 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

viool

De volgorde van uitvoerkolommen is van cruciaal belang (de berekeningen in uitvoerkolommen op een rij worden strikt uitgevoerd in de volgorde waarin ze zijn geschreven). Maar het maakt niet uit of dit voorbeeld wordt gebruikt als een subquery of dat de uitvoergegevens worden benaderd door kolomnamen.




  1. haal alleen waarden uit de tabel voor een specifieke dag in mysql

  2. Gelijktijdigheid van transacties beheren met vergrendelingen in SQL Server

  3. kan dataframe niet invoegen in een bestaande orakeltabel

  4. MySQL GROUP_CONCAT met nullwaarden