求一个 MSSQL 分组统计 SQL 查询

2019-05-28 13:36:30 +08:00
 wangjincp

这儿没有 MS-SQLServer 可选,就选择了 mysql

字段 A

aaaa-cc-a

bvdsv-bv-s

vdsavd-cc-a

csaccc-cc-c-c

fsafe-ff-s

csacsa-cc-a

gafff-bv-s

ff-s,cc-c-c,cc-a,bv-s,cc-a 这些是未知的,唯一特点就是第一个"-"后面的值。

需要得到的数据就是分组统计-后面数据有多少

最后统计得到的数据

cc-a 2

bv-s 2

cc-a 1

cc-c-c 1

ff-s 1

4065 次点击
所在节点    MySQL
3 条回复
LeeSeoung
2019-05-28 13:49:35 +08:00
正则+groupby 或者 index+substr+groupby
wangjincp
2019-05-28 14:27:09 +08:00
谢谢各位了,已经找到解决方案了!!!
非常感谢各位!!!

SET QUOTED_IDENTIFIER ON
GO
--创建函数
Create FUNCTION [dbo].[GetSubStrBySpint]
(
@String NVARCHAR(300),
@split NVARCHAR(10)
)
RETURNS NVARCHAR(1024)
AS

BEGIN
DECLARE @location INT
DECLARE @start INT
DECLARE @seed INT

SET @String = LTRIM(RTRIM(@String))
SET @start = CHARINDEX(@split, @String)
SET @seed = LEN(@split)
SET @start += @seed
SET @location = LEN(@String) - @start + @seed

RETURN SUBSTRING(@String, @start, @location)
END

我自己写了个函数
然后在查询就好了
谢谢各位!!!
然后直接调用
select * from (select dbo.GetSubStrBySpint([fieldA] , '.') as hz,count(1) as num from Table group by dbo.GetSubStrBySpint([fieldA] , '.')) as c order by c.num desc
chitanda
2019-05-28 17:33:42 +08:00
要想省事,升级到 8.0 或者换 Maria

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/568372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX