亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

你好,需要用sql處理數據,比如count( )函數?該怎么做?

你好,需要用sql處理數據,比如count( )函數?該怎么做?

qq_笑_17 2021-07-15 21:11:02
我有一個c表,里面有兩列,我想對于第一列的每一個元素在第二列里出現的次數進行記錄,不過我有點看不懂,誰能幫我解釋一下?select col001,(select count(1) from c t1 where t1.col002=t.col001)from c t;我主要不明白的地方:1.什么時候才可以用表明.列名。2.count(1),那個1是什么意思,為什么不count(col002) 0? 3 t1.col002=t.col001 為什么一個用t1一個用t?我以前想用group by這是我寫的 SELECT COL001,COUNT(COL002) FROM C WHERE COL002=COL001GROUP BY COL001 和剛才那個程序具體差別在哪里呢?哪位大俠給我看看?
查看完整描述

3 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

count(1)是每個記錄計數1次
count(col002)是每個col002不為NULL的記錄計數1次
一個用t1、一個用t
別名為啥要一樣?就是要不一樣啊
你寫的這個sql不也是對的嗎?實際我覺得你這個效率應該更好點

查看完整回答
反對 回復 2021-07-18
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

你寫的意思是,c表中2個字段相等的記錄數中 ,col001的個數
而上面那個語句是第一列的每一個元素在第二列里出現的次數進行記錄
下面的例子很顯然說明了這2者的差異
create table c
(
col001 int,
col002 int
);

insert into c
select 1,2 from dual
union all select 1,2 from dual
union all select 1,2 from dual
union all select 1,2 from dual
union all select 1,2 from dual
union all select 1,2 from dual
union all select 2,1 from dual
union all select 2,1 from dual
union all select 2,1 from dual
union all select 2,1 from dual
union all select 2,1 from dual
;
commit;

select distinct col001,(select count(1) from c t1 where t1.col002=t.col001)
from c t;
SELECT COL001,COUNT(COL002) FROM C WHERE COL002=COL001
GROUP BY COL001



查看完整回答
反對 回復 2021-07-18
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

1.只要是表或表別名都可以用表名.列名。一般是為了方便。
2.count(1) 中的1沒有意思,只是統計行數,用COL002也可以。
3.t1 是括號里的表C 的別名,t是括號外表C的別名。

兩個是有差別的,上一個顯示表C中的所有記錄,而你自己 寫的語句可以統計每個第一列出現的次數。如果第一個語句是你想要的,還有一個更簡單一些的語句:
select coloo1,count(col002) over(partition by col001) from c order by 排序列 不過個會再次排序。需要你有個排序列。這個還可以只統計排在前面的次數。

查看完整回答
反對 回復 2021-07-18
  • 3 回答
  • 0 關注
  • 444 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號