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

गैर-शून्य मानों द्वारा समूहित करें

मुझे लगता है कि निम्नलिखित वही करता है जो आप चाहते हैं:

SELECT *, (To_days(date_expires)-TO_DAYS(NOW())) as dayDiff, COUNT(id) AS change_count
FROM mytable
GROUP BY (case when source_id is null then id else source_id end)
HAVING dayDiff < 4 
ORDER BY (case when source_id is null then 1 else 0 end), date_created DESC

यह एक सशर्त group by . करता है इसलिए NULL स्रोत को समूहीकृत नहीं किया जाएगा। इसके बाद यह उन्हें order by . में तर्क का उपयोग करते हुए अंतिम स्थान पर रखता है ।

मुझे समझ में नहीं आया कि पिछली घटना से आपका क्या मतलब था। अब मुझे लगता है कि मैं करता हूं:

SELECT coalesce(s.id, mytable.id) as id,
       max(case when s.maxid is not null and s.maxid = myable.id then mytable.name
                when s.maxid is null then NULL
                else mytable.name
           end) as name,
       (To_days(date_expires)-TO_DAYS(NOW())) as dayDiff, COUNT(id) AS change_count
FROM mytable left outer join
     (select source_id, MAX(id) as maxid
      from mytable
      where source_id is not null
      group by source_id
     ) s
     on mytable.id = s.maxid
GROUP BY (case when source_id is null then id else source_id end)
HAVING dayDiff < 4 
ORDER BY (case when source_id is null then 1 else 0 end), date_created DESC

यह नवीनतम रिकॉर्ड (उच्चतम आईडी के आधार पर) से जानकारी में शामिल होता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. उपयोगकर्ता डेटाबेस तक नहीं पहुंच सकता

  2. तैयार बयानों का उपयोग करते समय mysql_real_escape_string() आवश्यक है?

  3. MySQL कोड को PDO स्टेटमेंट में कैसे बदलें?

  4. Python/Django MySQL डेटाटाइम हैंडलिंग और टाइमज़ोन

  5. आरोही द्वारा अंतिम 20 क्रम चुनें - PHP/MySQL