数据库为SQLSERVER
表数据如下图左边,要求查询结果为下图右边
name值为test的value中有两个值,一个是2.8,一个是2.7
现在要做的是统计各个value出现的次数,这里2.8出现了9次,2.7出现了2次。将出现次数最多的记录作为标准值(2.8),而其他出现的记录作为非标准值(2.7),要统计非标准值出现的次数(这里为2次),写到结果集的count字段
同理,name值为test2的标准值为4.7出现了8次,而非标准值为3.4出现了3次,因此结果集的count字段为3次。
不知道我表达清楚了没。。。
SQLSERVER实测,下图分别是模拟数据和sql查询结果示例:
select T1.name,T1.VALUE,T2.Number from (
SELECT name,SUM(value)value FROM TABLE_1 group by name )T1
inner join ( SELECT name,MIN(Number)Number FROM (
SELECT name, COUNT(VALUE)Number
FROM TABLE_1 group by name,value)T group by name)t2
on t1.name=t2.name
思路是分两组做查询然后关联结果集,第一组查name和total,第二组查name和最小count。