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

MySQL NULL से अलग की गई डेटा श्रृंखला के बीच दिनांक सीमाओं का चयन करें

मैं आपकी "अधिक जटिल समस्या" (अभी भी एक उत्तर पर काम कर रहा हूं) देख रहा हूं लेकिन यहां इस समस्या का समाधान है। यह देखते हुए कि आप विंडो फ़ंक्शंस का उपयोग कर रहे हैं, मैं मान रहा हूँ कि आप MySQL 8 का उपयोग कर रहे हैं और इसलिए CTE का भी उपयोग कर सकते हैं:

WITH cte AS (SELECT DATE(`date_time`) AS `date`,
                    `data`,
                    MAX(`data`) OVER (ORDER BY `date_time` ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS `data_max`
             FROM `test`),
cte2 AS (SELECT `date`,
                `data`,
                `data_max`,
                CASE WHEN `data` < `data_max` THEN `data` - `data_max` END AS `data_diff`
         FROM cte)
SELECT `data_max`, 
       MIN(CASE WHEN `data_diff` IS NOT NULL THEN date END) AS diff_date_from,
       MAX(CASE WHEN `data_diff` IS NOT NULL THEN date END) AS diff_date_to
FROM cte2
GROUP BY `data_max`
HAVING diff_date_from IS NOT NULL

आउटपुट:

data_max    diff_date_from  diff_date_to
4           2017-01-04      2017-01-06
5           2017-01-09      2017-01-11
6           2017-01-13      2017-01-13

dbfiddle पर डेमो



  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 में दिया गया मान हो

  2. एक्लिप्सलिंक और जोडा-टाइम का उपयोग कर डेटाबेस में यूटीसी में डेट-टाइम कैसे स्टोर करें?

  3. MySQL:विशिष्ट नोड में पत्ते कैसे खोजें

  4. मायएसक्यूएल लेवेनशेटिन

  5. PHP MYSQL SET लूप के दौरान त्रुटि देता है