猿问

如何使用一个SQL查询获得多个计数?

如何使用一个SQL查询获得多个计数?

我想知道如何写这个查询。

我知道这个实际的语法是假的,但是它会帮助你理解我想要什么。我需要这种格式,因为它是一个大得多的查询的一部分。

SELECT distributor_id, COUNT(*) AS TOTAL, COUNT(*) WHERE level = 'exec', COUNT(*) WHERE level = 'personal'

我需要在一个查询中返回所有这些。

另外,它需要在一行中,因此以下内容无法工作:

'SELECT distributor_id, COUNT(*)
GROUP BY distributor_id'


慕尼黑8549860
浏览 319回答 3
3回答

芜湖不芜

您可以使用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

繁星淼淼

一种肯定有效的方法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的性能分解。我离开这个是为了让人们了解他们的选择。

拉莫斯之舞

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只有在你的条件得到满足的情况下。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答