null - MySQL समूह द्वारा उपयोग करते समय गैर मिलान कॉलम के लिए एक रिक्त मान कैसे असाइन करें




group-by insert-into (3)

मेरे पास निम्न मूवीथीटर Tbl तालिका है:

Name      Location      Date    TicketRevenue  SnackRevenue  BeverageRevenue
AMC       Alpine St.    8/14        100             80             60
Atlas     Main St.      8/19        300             150            100
Atlas     Lincoln Rd.   8/19        50              50             40 

मैं इस डेटा को साररीटीब्लबल नामक एक टेबल में सम्मिलित करना चाहूंगा, जिसे मूवी थियेटर नाम के समूहीकृत राजस्व स्तंभों का योग प्रदर्शित करना चाहिए। यदि अन्य कॉलम में से कोई एक समान नाम वाली पंक्तियों के समान नहीं है (उदाहरण के लिए स्थान 2 एटलस प्रविष्टियों में अलग है), तो मैं उस स्थान पर प्रदर्शित होने के लिए एक रिक्त मान चाहूंगा। यह वही है जो मुझे SummaryTbl को पसंद करना है:

Name      Location      Date    TicketRevenue  SnackRevenue  BeverageRevenue
AMC       Alpine St.    8/14        100             80             60
Atlas                   8/19        350             200           140

यहाँ कोड है जिसका मैं वर्तमान में उपयोग कर रहा हूं:

insert into  SummaryTbl (Name,Location,Date,TicketRevenue,SnackRevenue,BeverageRevenue)
select Name,Location,Date,sum(TicketRevenue),sum(SnackRevenue), sum(BeverageRevenue)
from MovieTheaterTbl
group by Name

यह आंकड़ों को ठीक से एकत्रित करता है, लेकिन स्थान फ़ील्ड में एक नल मूल्य सम्मिलित नहीं होता है, जब एक एकल मूवी थियेटर में कई स्थान होते हैं क्या कोई कृपया यह कैसे समझा सकता है? धन्यवाद!


Answers

आप यूनियन एडीएन का उपयोग कर सकते हैं .. गणना (*)> 1 को नल और स्थान डालें

  insert into  SummaryTbl (Name,Location,Date,TicketRevenue,SnackRevenue,BeverageRevenue)
  select Name, NULL,Date,sum(TicketRevenue),sum(SnackRevenue), sum(BeverageRevenue)
  from MovieTheaterTbl
  group by Name
  HAVING COUNT(*) >1
  and count(location) >1
  UNION
  select Name, Location,Date,sum(TicketRevenue),sum(SnackRevenue), sum(BeverageRevenue)
  from MovieTheaterTbl
  group by Name
  HAVING COUNT(*) =1
  AND count(location) = 1

इसे इस्तेमाल करे:

insert into  SummaryTbl (Name,Location,Date,TicketRevenue,SnackRevenue,BeverageRevenue)
select Name, if(count(distinct Location)=1, Location, NULL), Date,sum(TicketRevenue),sum(SnackRevenue), sum(BeverageRevenue)
from MovieTheaterTbl
group by Name

ALTER TABLE `votes` ADD UNIQUE `unique_index`(`user`, `email`, `address`);




mysql sql null group-by insert-into