SQL对不重复项进行计数

selectWorkSubstance,count(DistinctClass)asClassfromClassDatewhereMachine='020-C03'and... select WorkSubstance,count(Distinct Class)as Class from ClassDate where Machine='020-C03' and DateTime='2014-7-18' group by WorkSubstance

此项语句是对 WorkSubstance 进行分类汇总, 但WorkSubstance旁边有一列 CLASS ,里面可能有2种值,也可能有一种值,用这个语句进行分类汇总的时候,如果WorkSubstance是一样的,则能正确返回CLASS的不重复项个数,如果WorkSubstance是不一样的,那么就返回不了CLASS不重复项的个数,求如何能正确返回CLASS中的不重复项个数,在WorkSubstance可能是一样的也可能是不一样的情况下,

补充一下: 就是在分类汇总下,对符合WHERE条件下的整个一列进行不重复项计数
展开
 我来答
jelvis
2014-07-22 · TA获得超过5631个赞
知道大有可为答主
回答量:2480
采纳率:62%
帮助的人:887万
展开全部

你的意思是说存在WorkSubstance不同CLASS相同的记录。如果按你的意思,对WorkSubstance分组就没有意义了。所以,要么不加WorkSubstance分组,只COUNT,要么不去count(Distinct Class),直接COUNT(1)

select count(Distinct Class)as Class from ClassDate where Machine='020-C03' and DateTime='2014-7-18'
--或者
select WorkSubstance,count(1)as Class from ClassDate where Machine='020-C03' and DateTime='2014-7-18' group by WorkSubstance
更多追问追答
追问
那能不能将查询好的CLASS作为新的一列插到最后一列呢? 然后保证新的一列行数与前面分组的行数一至?
追答
主要看你自己到底是想要干嘛
WorkSubstance,count(Distinct Class) 的意思是:每个WorkSubstance所对应的不重复的Class数
WorkSubstance,count(1) 的意思是:WorkSubstance数。
你想插入新列也可以,插入多少行你都可以自己控制啊。
所以,关键的问题是:你想要什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chen_hongyang
2014-07-22 · TA获得超过5448个赞
知道大有可为答主
回答量:2790
采纳率:91%
帮助的人:937万
展开全部
那如果要不重复的,就要把分组去掉,语句改成:
select count(Distinct Class)as Class from ClassDate where Machine='020-C03' and DateTime='2014-7-18'
更多追问追答
追问
分组是必须的呀,就是在分组的情况下对符合条件的CLASS进行整个的不重复计数,或者能先把CLASS这一列去掉,能在查询中再插一列做为新列也行
追答
按你的意思,这样的语句是对的,能不能举例子说明你需要什么,你描述不清楚啊
select WorkSubstance,count(Distinct Class)as Class from ClassDate where Machine='020-C03' and DateTime='2014-7-18' group by WorkSubstance
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式