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

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

如何使用一個SQL查詢獲得多個計數?

如何使用一個SQL查詢獲得多個計數?

SMILET 2019-07-12 16:43:03
如何使用一個SQL查詢獲得多個計數?我想知道如何寫這個查詢。我知道這個實際的語法是假的,但是它會幫助你理解我想要什么。我需要這種格式,因為它是一個大得多的查詢的一部分。SELECT distributor_id, COUNT(*) AS TOTAL, COUNT(*) WHERE level = 'exec', COUNT(*) WHERE level = 'personal'我需要在一個查詢中返回所有這些。另外,它需要在一行中,因此以下內容無法工作:'SELECT distributor_id, COUNT(*) GROUP BY distributor_id'
查看完整描述

3 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

您可以使用CASE具有聚合函數的語句。這與PIVOT函數在某些RDBMS中:

select distributor_id,
    count(*) total,
    sum(case when level = 'exec' then 1 else 0 end) ExecCount,
    sum(case when level = 'personal' then 1 else 0 end) PersonalCountfrom yourtablegroup by distributor_id


查看完整回答
反對 回復 2019-07-12
?
幕布斯6054654

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

一種肯定有效的方法

SELECT a.distributor_id,
    (SELECT COUNT(*) FROM myTable WHERE level='personal' and distributor_id = a.distributor_id) as PersonalCount,
    (SELECT COUNT(*) FROM myTable WHERE level='exec' and distributor_id = a.distributor_id) as ExecCount,
    (SELECT COUNT(*) FROM myTable WHERE distributor_id = a.distributor_id) as TotalCountFROM (SELECT DISTINCT distributor_id FROM myTable) a ;

編輯:
關于為什么你不想使用這種方法,而應該選擇“藍腳”的答案,請參見@KevinBalmford的性能分解。我離開這個是為了讓人們了解他們的選擇。


查看完整回答
反對 回復 2019-07-12
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

SELECT 
    distributor_id, 
    COUNT(*) AS TOTAL, 
    COUNT(IF(level='exec',1,null)),
    COUNT(IF(level='personal',1,null))FROM sometable;

COUNT只算non null值和DECODE將返回非空值。1只有在你的條件得到滿足的情況下。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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