『壹』 sql 查詢使用COUNT函數一個方法
select 欄位a,
count(case when (條件) then 表1.欄位b end) as c
from 表1 inner join 表2 on 表1.欄位=表2.欄位
可以用case加條件。
『貳』 SQL的COUNT語句
SQL中的count()語句是計算行數的語句,但根據括弧內的內容不同,略有區別。
1、創建測試表、插入數據:
createtabletest
(idint,
namevarchar(10),
name1varchar(10));
insertintotestvalues(1,'a','b')
insertintotestvalues(2,'c','d')
insertintotestvalues(3,'e',null)
2、做不同的測試(主要是針對欄位中含有null的情況)。
(a)測試語句
selectcount(*)fromtest;--不區分欄位,針對全表
結果:
(b)測試語句:
selectcount(id)fromtest;--針對一列不含空值的欄位
結果:
(c)測試語句:
selectcount(name1)fromtest;
結果:
結論:對count中為*或者列中不含空值的欄位,結果就是所有的行數,如果某一列含空值,結果就是去除了空行的部分的行數。
『叄』 sql中count或sum為條件的查詢示例(sql查詢count)
比如user_num表:
例1:查詢出現過2次的user
往往初學者會錯誤地認為在where
語句里直接使用count()演算法,很顯然這個想法是錯誤的,count()方法並不能被用在where子句中,為了解決問題,我們可以在group
by子句後面使用HAVING來做條件限制。
錯誤做法:select
*
from
user_num
where
count(user)>=2
group
by
user;
正確做法:select
*
from
user_num
group
by
user
HAVING
count(user)>=2
;
解釋說明:HAVING
與
WHERE
類似,可用來決定選擇哪些記錄。HAVING
子句在SELECT語句中指定,顯示哪些已用
GROUP
BY
子句分組的記錄。在GROUP
BY組合了記錄後,
HAVING會顯示
GROUP
BY
子句分組的任何符合
HAVING
子句的記錄。
例2:查詢單一用戶的num總和大於10的用戶
有前面的經驗,把sum()方法寫在HAVING子句中。
正確做法:select
*
from
user_num
group
by
user
HAVING
sum(num)>10
;
注意:一個HAVING子句最多隻能包含40個表達式,HAVING子句的表達式之間可以用AND和OR分割。
『肆』 sql中的count是什麼意思呢,求例子
COUNT是統計滿足條件的數量,例如下面的語句查詢總的記錄數:
SELECT COUNT(*) FROM tab;
例如下面的語句顯示男性的記錄數:
SELECT COUNT(*) FROM tab WHERE sex='男';
再如下面的語句同時顯示男性和女性的記錄數:
SELECT sex,COUNT(*) FROM tab GROUP BY sex;
『伍』 為什麼sql查詢語句中的count(*)等聚合函數可以放在having後面,而不能放在where後面
因為where先於group by執行,當執行where的時候還沒有分組,沒有東西可以數,所以聚合函數只能放在比group by先執行的指令里
『陸』 在SQL語句中,SELECT查詢語句中的count、group by、where子句代表什麼樣的功能
count()是一個聚集函數(也稱為聚合函數)是為了選定行的數目,可以包含空值。group by 是分組, 可以按照一個多多個欄位分組。 使用時應注意:select 後顯示的信息:要麼包含在聚集函數中,要麼包含在group by 子句中。where :是一個條件語句,在where後面跟的是條件!
『柒』 關於SQL中count的用法
用sum更好點,如
(一)
select
a.單位名稱,sum(case
when
b.時間>='2007-04-01'
and
b.時間<'2007-07-01'
then
1
else
0
end)
as
[2007二季度],sum(case
when
b.時間>='2007-10-01'
and
b.時間<'2008-01-01'
then
1
else
0
end)
as
[2007四季度]
from
表一
a
left
join
表二
b
on
a.單位名稱=b.單位名稱
group
by
a.單位名稱
(二)
select
a.單位名稱,sum(case
when
b.時間>='2007-04-01'
and
b.時間<'2007-07-01'
and
b.類別='e'
then
1
else
0
end)
as
[2007二季度],sum(case
when
b.時間>='2007-10-01'
and
b.時間<'2008-01-01'
and
b.類別='e'
then
1
else
0
end)
as
[2007四季度]
from
表一
a
left
join
表二
b
on
a.單位名稱=b.單位名稱
group
by
a.單位名稱
『捌』 sql中count函數的使用
COUNT() 函數返回匹配指定條件的行數。
SQL COUNT(column_name) 語法
COUNT(column_name) 函數返回指定列的值的數目(NULL 不計入):
SELECT COUNT(column_name) FROM table_name;
SQL COUNT(*) 語法
COUNT(*) 函數返回表中的記錄數:
SELECT COUNT(*) FROM table_name;
SQL COUNT(DISTINCT column_name) 語法
COUNT(DISTINCT column_name) 函數返回指定列的不同值的數目:
SELECT COUNT(DISTINCT column_name) FROM table_name;
注釋:COUNT(DISTINCT) 適用於 ORACLE 和 Microsoft SQL Server,但是無法用於 Microsoft Access。
SQL COUNT(column_name) 實例
下面的 SQL 語句計算 "access_log" 表中 "site_id"=3 的總訪問量:
實例
SELECT COUNT(count) AS nums FROM access_log
WHERE site_id=3;
SQL COUNT(*) 實例
下面的 SQL 語句計算 "access_log" 表中總記錄數:
實例
SELECT COUNT(*) AS nums FROM access_log;
執行以上 SQL 輸出結果如下:
『玖』 sql 文中同樣的where條件,count這個sql文的 件數 和和執行抽出sql文的效率一樣嗎
看有沒有主鍵,如果有主鍵,可以理解為一樣的
如果沒有主鍵,count效率會低很多
『拾』 sql中count是什麼含義
COUNT() 函數返回匹配指定條件的行數。
SQL COUNT(column_name) 語法
COUNT(column_name) 函數返回指定列的值的數目(NULL 不計入):
注釋:COUNT(DISTINCT) 適用於 ORACLE 和 Microsoft SQL Server,但是無法用於 Microsoft Access。
-from shulanxt
整理不易,望採納~