Reputation: 21
I am a new face to SQL. Suppose I have a set of data:
==================
|| iphone6 ||
|| iphone7 ||
|| iphone7s ||
|| Android 7.1 ||
|| Android 6.3 ||
==================
And I want to get the result like this:
||Model ||Amount ||
==========================
||iphone || 3||
||Android || 2||
==========================
And my code is like this:
SELECT
CASE
WHEN model LIKE '%Android%' THEN 'Android'
WHEN model LIKE '%iPhone%' THEN 'IPhone'
END,
, COUNT(*) AS Amount FROM #table GROUP BY model;
But my output is :
||Model || Amount||
==========================
||IPhone || 1||
||IPhone || 1||
||IPhone || 1||
||Android || 1||
||Android || 1||
==========================
How can I fix it?
Upvotes: 1
Views: 48
Reputation: 1271003
You just need to aggregate by the column you are creating:
SELECT (CASE WHEN model LIKE '%Android%' THEN 'Android'
WHEN model LIKE '%iPhone%' THEN 'IPhone'
END),
COUNT(*) AS Amount
FROM #table
GROUP BY (CASE WHEN model LIKE '%Android%' THEN 'Android'
WHEN model LIKE '%iPhone%' THEN 'IPhone'
END);
Upvotes: 4