Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвате групиране по и самостоятелно присъединяване, за да върнете минимални, максимални, отворени и затворени дневни резултати от цената?

Така че искате:

  • Псевдонимът C за да съответства на всички редове в групата за даден ден, така че можете да използвате MAX() и MIN() върху редовете в тази група.
  • Псевдонимът C2 да съответства на последния ред в даден ден.
  • Псевдонимът C3 да съответства на ред по-късен от C2 На същия ден. Ако не бъде намерено, т.е. C3.* е NULL, след това C2 е последният за този ден.

Това често се означава като greatest-n-per-group заявка и се появява често в Stack Overflow. Ето решение, което тествах за вашите тестови данни, но можете да следвате маркера, който добавих към въпроса ви за други решения и дискусии.

редактиране: Пропуснах изискването както за начална цена, така и за цена на затваряне. Следното е редактирано.

SELECT DATE_FORMAT(C.`DTE`, '%m/%d/%Y') AS trading_day, 
  MIN(C.`PRICE`) AS min_price, 
  MAX(C.`PRICE`) AS max_price, 
  Copen.`PRICE` AS opening_price,
  Cclose.`PRICE` AS closing_price 
FROM `CHART_DATA` AS C 
INNER JOIN `CHART_DATA` AS Cclose 
  ON DAY(C.`DTE`) = DAY(Cclose.`DTE`) 
LEFT OUTER JOIN `CHART_DATA` AS Cclose_later 
  ON DAY(C.`DTE`) = DAY(Cclose_later.`DTE`) AND Cclose.`DTE` < Cclose_later.`DTE`
INNER JOIN `CHART_DATA` AS Copen 
  ON DAY(C.`DTE`) = DAY(Copen.`DTE`) 
LEFT OUTER JOIN `CHART_DATA` AS Copen_earlier 
  ON DAY(C.`DTE`) = DAY(Copen_earlier.`DTE`) AND Copen.`DTE` < Copen_earlier.`DTE`
WHERE Cclose_later.`DTE` IS NULL AND Copen_earlier .`DTE` IS NULL 
GROUP BY trading_day;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при вмъкване на MySQL:ER_BAD_FIELD_ERROR:Неизвестна колона „2525“ в „списък с полета“

  2. Doctrine2 със Symfony2 не разпознава db charset и collation

  3. PDOException::(PDO::__construct():Неочакван отговор на сървъра при извършване на caching_sha2 auth:109) с MySQL 8 / PHP 7.2 / Laravel

  4. Как да експортирате база данни от Amazon RDS MySQL екземпляр към локален екземпляр?

  5. mySQL низ за връзка през SSH тунел без парола