2015-05-19 7 views
5

मैं निम्नलिखित सामग्री के साथ एक मेज है:समूह और फिल्टर mysql परिणाम

 
| Country  | Username  | 
+---------------+----------------+ 
| US   | John   | 
| IT   | Pedro   | 
| US   | Bob   | 
| FR   | Jill   | 
| 192.168.1.2 | Roupraht  | 
| 192.168.1.20 | Antonio  | 
+---------------+----------------+ 

मैं प्रत्येक देश के उपयोगकर्ताओं की गणना करना चाहते है, और देश के बजाय आईपी पते के साथ उपयोगकर्ताओं को "अज्ञात" की तरह गिनती की जानी चाहिए ;

मैं निम्नलिखित SQL क्वेरी लिखने में कामयाब रहे:

select country, count(*) as total from users group by country; 

और मैं निम्नलिखित परिणाम मिला:

 
+-----------------+-------+ 
| country   | total | 
+-----------------+-------+ 
| 192.168.1.2  |  1 | 
| 192.168.1.20 |  1 | 
| US    |  2 | 
| IT    |  1 | 
| FR    |  1 | 
+-----------------+-------+ 

मैं कैसे एक "अज्ञात" के रूप में सभी IP पतों भरोसा कर सकते हैं?
मेरा लक्ष्य इस तरह की मेज पाने के लिए है:

 
+-----------------+-------+ 
| country   | total | 
+-----------------+-------+ 
| Unknown   |  2 | 
| US    |  2 | 
| IT    |  1 | 
| FR    |  1 | 
+-----------------+-------+ 
+0

करने के लिए वैरिएबल 'अज्ञात' स्थापित करने के लिए उपयोग कर सकते हैं यदि आप हाँ जैसा कि नाम से isIP साथ एक और स्तंभ जोड़ सकते हैं/कोई। इसके मूल्य के आधार पर आप अज्ञात डेटा की गणना कर सकते हैं। –

उत्तर

4

आईपी पते Unknown रूप में माना जा करने के लिए नहीं हैं, तो आप निम्नलिखित चाल कर सकते हैं

select 
country,count(*) as tot 
from users 
where inet_aton(country) is null 
group by country 
union all 
select 
'Unknown',count(*) as tot 
from users 
where inet_aton(country) is not null; 

https://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton

1

आप mysql का उपयोग कर सकते अगर कथन के साथ कथन की तरह:

select if(country LIKE '%.%.%.%', 'unknown', country), count(*) as total from users group by country; 
+0

यह 'अज्ञात' गणना नहीं करेगा, इसके बजाय प्रति आईपी पते पर एक 'अज्ञात' पंक्ति मुद्रित करें। आपको इसके पहले कॉलम और समूह को उपनाम करना चाहिए। –

0

आप इस

set @unknown = (select country from table where country LIKE '%.%.%.%'); 

सभी IP पतों

संबंधित मुद्दे