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

मौजूद डेटा नहीं के लिए खाली पंक्तियाँ लौटाएँ

आप नीचे जैसा कुछ कर सकते हैं:

# table creation:

drop table if exists test_table;

create table test_table (your_date date, your_value int(11));
insert into test_table (your_date, your_value) values ('2020-01-01', 1);
insert into test_table (your_date, your_value) values ('2020-01-01', 2);
insert into test_table (your_date, your_value) values ('2020-01-03', 2);
insert into test_table (your_date, your_value) values ('2020-01-07', 3);
insert into test_table (your_date, your_value) values ('2020-01-08', 4);
insert into test_table (your_date, your_value) values ('2020-01-08', 1);

यह मूल रूप से सभी तिथियों की एक सूची बनाता है। फिर आप उन तिथियों के लिए फ़िल्टर करते हैं जिनमें आपकी रुचि है, अपनी तालिका और समूह से जुड़ें।

आप जहां स्टेटमेंट में तारीखों को सबक्वायरी (अपनी तालिका की न्यूनतम और अधिकतम तिथि) से बदल सकते हैं ताकि इसे गतिशील बनाया जा सके

यह थोड़ा काम का है लेकिन यह काम करता है।

select sbqry.base_date, sum(ifnull(t.your_value, 0))
from (select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) base_date from
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
    (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) sbqry
left join test_table t on base_date = t.your_date
where sbqry.base_date between '2020-01-01' and '2020-01-08'
group by sbqry.base_date;

इनपुट:

+------------+------------+
| your_date  | your_value |
+------------+------------+
| 2020-01-01 |          1 |
| 2020-01-01 |          2 |
| 2020-01-03 |          2 |
| 2020-01-07 |          3 |
| 2020-01-08 |          4 |
| 2020-01-08 |          1 |
+------------+------------+

आउटपुट:

+------------+------------------------------+
| base_date  | sum(ifnull(t.your_value, 0)) |
+------------+------------------------------+
| 2020-01-01 |                            3 |
| 2020-01-02 |                            0 |
| 2020-01-03 |                            2 |
| 2020-01-04 |                            0 |
| 2020-01-05 |                            0 |
| 2020-01-06 |                            0 |
| 2020-01-07 |                            3 |
| 2020-01-08 |                            5 |
+------------+------------------------------+


  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. N पंक्तियों के साथ अद्वितीय रिकॉर्ड सीमा चुनें

  3. एक mysql डेटाबेस में कितनी टेबल बनाई जा सकती हैं?

  4. MySQL को AWS RDS पर PostgreSQL में माइग्रेट करना, भाग 1

  5. क्रोम एक्सटेंशन से डीबी से कनेक्ट हो रहा है?