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

MySQL बिना रिकॉर्ड वाली तारीखों के लिए 0 की गिनती दिखाता है

मेरे पिछले उत्तर से ठीक है MySql सिंगल टेबल, पिछले 7 दिनों का चयन करें और खाली पंक्तियों को शामिल करें

यहां आप तिथि चयन को गतिशील बनाने के लिए क्या कर सकते हैं

select 
t1.attempt_date,
coalesce(SUM(t1.attempt_count+t2.attempt_count), 0) AS attempt_count
from
(
  select DATE_FORMAT(a.Date,'%Y/%m/%d') as attempt_date,
  '0' as  attempt_count
  from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
  ) a
  where a.Date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
)t1
left join
(
  SELECT DATE_FORMAT(attempt_date,'%Y/%m/%d') AS attempt_date, 
  COUNT(*) AS attempt_count
  FROM users_attempts
  WHERE DATE_SUB(attempt_date, INTERVAL 1 DAY) > DATE_SUB(DATE(NOW()), INTERVAL 1 WEEK) 
  GROUP BY DAY(attempt_date) DESC
)t2
on t2.attempt_date = t1.attempt_date
group by DAY(t1.attempt_date)
order by t1.attempt_date desc;

DEMO



  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_* API का उपयोग करके कोई पंक्ति मौजूद है या नहीं

  4. XML फ़ीड से MySQL में रिकॉर्ड अपडेट करने का सबसे अच्छा तरीका

  5. अद्वितीय अनुक्रमणिका के साथ डुप्लिकेट निकालना