我的表格如下所示:
id name
---|------|------------|
| 1 | IP2.0-v1.0 |
| 2 | IP2.0-v2.0 |
| 3 | IP1.0-v1.0 |
| 4 | IP1.1-v1.0 |
我想按结果分组如下:
name count
---|----------|------------|
| IP2.0 | 2 |
| IP1.0 | 1 |
| IP1.1 | 1 |
如何使用group by?
设法获取SQL查询从table_a GROUP BY ...........
中选择名称,计数(*)
答案 0 :(得分:1)
您希望子查询在
组之前执行子字符串select nameSub, count(*) from
(select id, substring(name,1,5) as nameSub from table)
group by nameSub
答案 1 :(得分:1)
SELECT SUBSTRING (NAME,1,5), COUNT(*) FROM table_a GROUP BY SUBSTRING (NAME,1,5)
答案 2 :(得分:1)
MySQL Fiddle和SQL Server Fiddle:
SELECT LEFT(name, 5), count(*)
FROM MyTable
GROUP BY LEFT(name, 5)
答案 3 :(得分:1)
试试这个:
SELECT SUBSTRING(Name,1,CHARINDEX('-',Name)-1) AS Name, COUNT(*) AS Count
FROM table_a
GROUP BY SUBSTRING(Name,1,CHARINDEX('-',Name)-1)
如果SUBSTRING
的长度变化,则 Name
非常有用
答案 4 :(得分:1)
尝试使用SUBSTRING( str FROM pos FOR len )
SELECT
SUBSTRING(`name` from 1 for 5) as name_res,
COUNT(*)
FROM @TABLE
GROUP BY name_res;