計(jì)數(shù)不重復(fù)方法如下:
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),向陽企業(yè)網(wǎng)站建設(shè),向陽品牌網(wǎng)站建設(shè),網(wǎng)站定制,向陽網(wǎng)站建設(shè)報(bào)價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,向陽網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
分組是必須的,在分組的情況下對符合條件的CLASS進(jìn)行整個的不重復(fù)計(jì)數(shù)。
或者能先把CLASS這一列去掉,能在查詢中再插一列做為新列也行要么不加WorkSubstance分組,只COUNT,要么不去count(DistinctClass),直接COUNTselectcount(DistinctClass)asClassfromClassDatewhereMachine='020-C03'andDateTime='2014-7-18'。
//查詢表中的數(shù)據(jù) 同時某個字段不重復(fù) 并且排序
首先做一下查詢某個字段不重復(fù)(使用group?by);
select?*?from 表名 where group?by 不重復(fù)的字段名;
在做一下排序,我之前有發(fā)過一次排序,這次就做一個簡單排序
order?by 字段a=0?desc,?字段a desc,字段b desc (a字段等于0在最前面,a字段除了0之外的都為倒敘,b字段倒敘);
這樣組合起來就好了
select?*?from 表名 where group?by 不重復(fù)的字段名 order?by 字段a=0?desc,?字段a?desc,字段b?desc;
一張user表 中的name字段,里面有10個張三。我要只查詢出一個張三。
SQL: select distinct name from user
如果還要查詢出id
SQL: select distinct name,id from user
SQL :select name from user group by name
group by理解:表里的某一個字段(比如:name) 當(dāng)出現(xiàn)相同的數(shù)據(jù)時,group by就將這2條數(shù)據(jù)合二為一。name就顯示一條 數(shù)據(jù)了。 但是name達(dá)到合二為一了,這2條數(shù)據(jù)的其他數(shù)據(jù)怎么辦呢? 這時候需要配合聚合函數(shù)的使用。
where條件:分組前的條件,配合任何關(guān)鍵字使用
Having 條件:分組后的條件 (事后條件) ,只配合group by使用。having條件通常使用聚合函數(shù)
SQL :select deptno,sum(sal) from emp group by deptno having sum(sal) 9000;
SQL: select deptno,count(*) from emp where sal 1000 group by deptno haing sum(sal) 8000
拓展:
聚合函數(shù)定義:聚合函數(shù)對一組值進(jìn)行計(jì)算并返回單一的值。(以下都屬于聚合函數(shù))
count(*) : 不包括空值。返回對行數(shù)目的計(jì)數(shù)。計(jì)算出有多少行,多少條數(shù)據(jù)。
count() : 包含空值。返回對數(shù)目的計(jì)數(shù)。計(jì)算表里有多少行,相當(dāng)于多少條數(shù)據(jù)。
sum() : 求和運(yùn)算
max(); 最大值
min(): 最小值
avg(): 平均值