MySQL: Growth in Column Value for Given Foreign Key and Specific Date Range -
i have table in database update every day amount of pins on pinterest given url (page_id). how write query return page_id largest growth given date range?
typically, plan on setting @startdate = yesterday , setting @enddate = today, i'd flexibility adjust dates within query.
here current schema of pins table:
mysql> describe pins; +---------+---------+------+-----+---------+----------------+ | field | type | null | key | default | | +---------+---------+------+-----+---------+----------------+ | id | int(11) | no | pri | null | auto_increment | | page_id | int(11) | no | mul | null | | | date | date | yes | | null | | | pins | int(11) | yes | | null | | +---------+---------+------+-----+---------+----------------+ here desired output of query need with:
mysql> [fancy-mysql-query] order pins_dayoverday desc limit 1; +-------------------+---------------------------+ | page_id | pins_dayoverday | +-------------------+---------------------------+ | 12345 | 12345 | +-------------------+---------------------------+ any appreciated!
if pins column daily delta, net change in number of pins added/removed on given date, then:
select @startdate = date_format(now(),'%y-%m-%d') + interval -1 day select @enddate = date_format(now(),'%y-%m-%d') select t.page_id , sum(t.pins) `pins_dayoverday` mytable t t.date >= @startdate , t.date <= @enddate group t.page_id order `pins_dayoverday` desc limit 1 if pins column cumulative , contains total count of number of effective pins (pins done on previous days plus pins added/removed today), assuming (page_id,date) unique:
select t.page_id , (t.pins - s.pins) `pins_dayoverday` mytable t join mytable s on s.page_id = t.page_id t.date = @enddate , s.date = @startdate group t.page_id order `pins_dayoverday` desc limit 1 the query above assumes (page_id,date) unique. if same page_id can have multiple rows same date, we'd need add aggregate functions. (i provide query if need it.)
Comments
Post a Comment