Click here to Skip to main content
15,891,136 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
i have data in field in table like:

browser: ip:
chrome23 127.1.1.2
crome24 127.1.1.2
chrome25 127.1.1.2
firefox3 127.1.1.2
firefox18 127.1.1.2

i want dispaly data like this

browser ip
chrome count(3)
firefox count(2)
Posted
Updated 27-Feb-13 21:53pm
v3
Comments
willington.d 28-Feb-13 4:14am    
hi jiji... why all values in browser ends with some values(23, 24, 25..)? b'cos of that, we can not group the browser to count...
jiji2663 28-Feb-13 4:40am    
that is version of browser's
willington.d 28-Feb-13 5:09am    
hi jiji

then try the following...

select left(browser, 4), COUNT(1) as IP from test2 group by left(browser, 4)

Hi,

Check the following script

SQL
DECLARE @BrowserDtls TABLE(LoginDtls VARCHAR(100))

INSERT INTO @BrowserDtls (LoginDtls)
SELECT 'chrome23 127.1.1.2'
UNION ALL SELECT 'crome24 127.1.1.2'
UNION ALL SELECT 'chrome25 127.1.1.2'
UNION ALL SELECT 'firefox3 127.1.1.2'
UNION ALL SELECT 'firefox18 127.1.1.2'

-- Actual Data
SELECT LoginDtls FROM @BrowserDtls 

-- Required Data
SELECT CASE WHEN PATINDEX('%[0-9]%',LoginDtls)>1 THEN LEFT(LoginDtls,PATINDEX('%[0-9]%',LoginDtls)-1) ELSE LoginDtls END 'BrowserName',
COUNT(*) 'BrowserCount' 
FROM @BrowserDtls 
GROUP BY (CASE WHEN PATINDEX('%[0-9]%',LoginDtls)>1 THEN LEFT(LoginDtls,PATINDEX('%[0-9]%',LoginDtls)-1)
		  ELSE LoginDtls END)
 
Share this answer
 
Comments
gvprabu 1-Mar-13 0:32am    
Hi
Try like this also....

SELECT SUBSTRING(LoginDtls,0,patindex('%[0-9]%',LoginDtls)),count(LoginDtls) FROM @BrowserDtls group by SUBSTRING(LoginDtls,0,patindex('%[0-9]%',LoginDtls))
If that is 2 different fields in your table then
SQL
SELECT Browser, Count(ip) AS IpCount FROM [YourTable]
GROUP BY Browser;

if that is single field then
SQL
create table browsers(name varchar(255));

SQL
insert into Browsers(name) values('chrome23 127.1.1.2'), ('chrome24 127.1.1.2'), ('chrome25 127.1.1.2'), ('firefox3 127.1.1.2'), ('firefox18 127.1.1.2');
select * from Browsers;

SQL
select BrowserName, Count(*) as Total from(
select SubString(name, 0, patindex('%[0-9]%', name)) as browserName, name from browsers
) as b
Group By BrowserName
 
Share this answer
 
Here is a sample approach
SQL
DECLARE @T TABLE (Browser VARCHAR(100), IP VARCHAR(100))
INSERT INTO @T
SELECT 'chrome23', '127.1.1.2' UNION ALL
SELECT 'chrome24', '127.1.1.2' UNION ALL
SELECT 'chrome25', '127.1.1.2' UNION ALL
SELECT 'firefox3', '127.1.1.2' UNION ALL
SELECT 'firefox18', '127.1.1.2'

--SELECT * FROM @T

SELECT Browser, SUM([Count]) AS IPCount FROM
(
    SELECT 'Chrome' AS Browser, CASE WHEN Browser LIKE 'Chrome%' THEN 1 ELSE 0 END AS [Count] FROM @T
    UNION ALL
    SELECT 'firefox' AS Browser, CASE WHEN Browser LIKE 'firefox%' THEN 1 ELSE 0 END AS [Count] FROM @T
) X
GROUP BY X.Browser
 
Share this answer
 
Try This:

SQL
CREATE Function udf_Name(@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin

    Declare @NumRange as varchar(50) = '%[0-9]%'
    While PatIndex(@NumRange, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@NumRange, @Temp), 1, '')

    Return @Temp
End

Then Use Above UDF in Query like

SQL
Select BName,
COUNT(tbl.Ip) As CountValue
from
(
Select dbo.udf_Name(b.browser) BName,* from Browser b
) tbl
Group by tbl.BName
 
Share this answer
 
v2
SQL
select LEFT(Tbl_Vst.BrowserType,2) as 'Browser type',COUNT(LEFT(Tbl_Vst.BrowserType,2)) as counts from Tbl_Vst
where LEFT(Tbl_Vst.BrowserType,2)='ch' or LEFT(Tbl_Vst.BrowserType,2)='fi' or LEFT(Tbl_Vst.BrowserType,2)='ie' or LEFT(Tbl_Vst.BrowserType,2)='un'
group by LEFT(Tbl_Vst.BrowserType,2)
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900