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

Jaká je správná syntaxe pro dělení v SQL

Kumulativní součet pomocí 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

fiddle

Pořadí výstupních sloupců je kritické (výpočty ve výstupních sloupcích v řádku se provádějí přesně v pořadí, v jakém jsou zapsány). Nezáleží však na tom, zda je tento příklad použit jako poddotaz nebo je k výstupním datům přistupováno pomocí názvů sloupců.




  1. jak získat přístup ke vzdálené databázi mysql

  2. Mysql COUNT(*) na více tabulkách

  3. Překlady vztahů po migraci na Rails 3.2.1 neexistují

  4. Syntaxe pro vlastní líné vyhodnocení/zkratování parametrů funkcí