1

I am using UNION ALL to club the values.

SELECT COUNT(*) as votesfromIndia FROM voting WHERE MobNo LIKE '91%'
UNION ALL
SELECT COUNT(*) as votesfromUS FROM voting WHERE MobNo LIKE '1%'
UNION ALL
SELECT COUNT(*) as votesfromBelgium FROM voting WHERE MobNo LIKE '32%'
UNION ALL
SELECT COUNT(*) as votesfromHK FROM voting WHERE MobNo LIKE '852%'
UNION ALL
SELECT COUNT(*) as votesfromIsrael FROM voting WHERE MobNo LIKE '972%'

Result is :

enter image description here

But I want country wise:

enter image description here

Fields I am having: name, mobno. Any help will be appreciated.

GMB
  • 216,147
  • 25
  • 84
  • 135
golie
  • 11
  • 3

3 Answers3

0

You can add another column to each unioned query with a constant value that shows the country each row corresponds to:

SELECT 'India' country, COUNT(*) as votes FROM tbl_javoting WHERE nMobNo LIKE '91%'
UNION ALL
SELECT 'US', COUNT(*) FROM tbl_javoting WHERE nMobNo LIKE '1%'
UNION ALL
SELECT 'Belgium', COUNT(*) FROM tbl_javoting WHERE nMobNo LIKE '32%'
UNION ALL
SELECT 'Hong Kong', COUNT(*) FROM tbl_javoting WHERE nMobNo LIKE '852%'
UNION ALL
SELECT 'Israel', COUNT(*) FROM tbl_javoting WHERE nMobNo LIKE '972%'

Side note: it is not necessary (nor relevant) to give different names to the columns returned by each unioned query: the first query defines the column names for the whole resultset.

GMB
  • 216,147
  • 25
  • 84
  • 135
0

I guess name is the country name?

SELECT name as Country, COUNT(*) as votes FROM tbl_javoting group by name
Jens
  • 67,715
  • 15
  • 98
  • 113
0

Use a case expression for aggregation:

SELECT (CASE WHEN MobNo LIKE '91%' THEN 'India'
             WHEN MobNo LIKE '1%' THEN 'US'
             WHEN MobNo LIKE '32%' THEN 'Belgium' 
             WHEN MobNo LIKE '852%' THEN 'HK' 
             WHEN MobNo LIKE '972%' THEN 'Israel'
        END) as location,
        COUNT(*) as votes
FROM voting 
GROUP BY location;

If you want the results in separate columns:

SELECT SUM(MobNo LIKE '91%') as India, 
       SUM(MobNo LIKE '1%') as US, 
       SUM(MobNo LIKE '32%') as Belgium, 
       SUM(MobNo LIKE '852%') as HK, 
       SUM(MobNo LIKE '972%') as Israel
FROM voting ;
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786