sql >> Database teknologi >  >> RDS >> Mysql

Sådan finder du toptabere i 1 dag, 1 måned baseret på historiske data

Du kunne gøre sådan noget*:

select * from (select symbol_name , (prevclose_val-close_val) as losers,'daily' as `type` from historical_data where current_day >= '2015-12-14' order by losers asc limit 10 ) as sub_daily
union
select * from (select symbol_name , (prevclose_val-close_val) as losers,'weekly' as `type` from historical_data where current_day >= '2015-12-7' order by losers asc limit 10 ) as sub_weekly
union
select * from (select symbol_name , (prevclose_val-close_val) as losers,'monthly' as `type` from historical_data where current_day >= '2015-11-14' order by losers asc limit 10 ) as sub_monthly;

Forresten bør du virkelig ændre dit datofelt fra "varchar" til "DATE" eller "DATETIME" og bruge yyyy-mm-dd format til dine datoer. På den måde kan du bruge MySQL til at lave beregninger på din dato.

* denne forespørgsel kræver din current_day felt til at være en date eller datetime type.




  1. Mulig måde at indsætte lastInsertId fra en tabel til en anden på samme tid eller samtidigt

  2. Standard Dato/Time Format Strings Understøttet af FORMAT() i SQL Server

  3. MySQL Sorter efter kolonne =x, kolonne asc?

  4. Jeg har ved et uheld låst root ude på MySQL