Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

ग्रुप बाय का उपयोग कैसे करें और न्यूनतम, अधिकतम, खुला और बंद दैनिक मूल्य रेस्टल्ट सेट वापस करने के लिए स्वयं से जुड़ें?

तो आप चाहते हैं:

  • उपनाम C किसी दिए गए दिन के लिए समूह में सभी पंक्तियों के अनुरूप होने के लिए, ताकि आप MAX() . का उपयोग कर सकें और MIN() उस समूह की पंक्तियों के ऊपर।
  • उपनाम C2 किसी दिए गए दिन में अंतिम पंक्ति के अनुरूप होने के लिए।
  • उपनाम C3 C2 . के बाद की पंक्ति के अनुरूप होने के लिए उसी दिन। यदि कोई नहीं मिलता है, अर्थात C3.* NULL है, तो C2 उस दिन का नवीनतम है।

इसे अक्सर greatest-n-per-group . का लेबल दिया जाता है क्वेरी, और यह अक्सर स्टैक ओवरफ़्लो पर आता है। यहां एक समाधान है जिसका मैंने आपके परीक्षण डेटा के लिए परीक्षण किया है, लेकिन आप अन्य समाधानों और चर्चा के लिए मेरे द्वारा आपके प्रश्न में जोड़े गए टैग का अनुसरण कर सकते हैं।

संपादित करें: मैं शुरुआती कीमत और बंद कीमत दोनों की आवश्यकता से चूक गया। निम्नलिखित संपादित किया गया है।

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. अद्यतन क्वेरी त्रुटि के साथ विफल:1175

  2. क्या किसी को SQL डेटाबेस में BSON ObjectId मानों को संग्रहीत करने का एक प्रभावी तरीका मिला है?

  3. कमांड लाइन मैक से mysql तक नहीं पहुंच सकता

  4. फ़ाइल अजाक्स में अपलोड नहीं हो रही है php mysql

  5. MySQL पहले उपलब्ध सप्ताहांत खोजें