首页 新闻 会员 周边 捐助

求一个sql语句

0
悬赏园豆:20 [已解决问题] 解决于 2019-04-04 08:09

数据库为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次。

不知道我表达清楚了没。。。

teagueli的主页 teagueli | 初学一级 | 园豆:75
提问于:2019-03-19 10:07
< >
分享
最佳答案
0

SQLSERVER实测,下图分别是模拟数据和sql查询结果示例:

收获园豆:20
顾星河 | 大侠五级 |园豆:7288 | 2019-03-19 10:49

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

顾星河 | 园豆:7288 (大侠五级) | 2019-03-19 10:49

思路是分两组做查询然后关联结果集,第一组查name和total,第二组查name和最小count。

顾星河 | 园豆:7288 (大侠五级) | 2019-03-19 10:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册