select state,count(*) from crm_lead group by state;
其返回
state count
done 794
open 560
pending 3
draft 8
cancel 1
但有时当我有没有 '取消' 的任务在我的表
state count
done 794
open 560
pending 4
draft 8
我想包括在计数= 0结果,什么是最好的查询?
select state,count(*) from crm_lead group by state;
其返回
state count
done 794
open 560
pending 3
draft 8
cancel 1
但有时当我有没有 '取消' 的任务在我的表
state count
done 794
open 560
pending 4
draft 8
我想包括在计数= 0结果,什么是最好的查询?
SELECT a.STATE ,
COALESCE(b.count, 0) AS Count
FROM
(
SELECT 'done' AS STATE
UNION
SELECT 'open' AS STATE
UNION
SELECT 'pending' AS STATE
UNION
SELECT 'draft' AS STATE
UNION
SELECT 'cancel' AS STATE
) a LEFT JOIN
(
SELECT STATE ,
count(*) AS count
FROM crm_lead
GROUP BY STATE
) b ON a.STATE = b.STATE
'+ 1'为此.. –
要从行中形成一个集合而不需要重复使用'UNION ALL'。虽然只有五行并不重要。 –
多好的查询,谢谢帅哥。 –
你也可以做到这一点,如果你只是想确保取消是在列表中:
select coalesce(t.state, const.state) as state, coalesce(t.cnt, const.cnt) as cnt
from (select state, count(*) as cnt
from crm_lead
group by state
) t full outer join
(select 'cancel' as state, 0 as cnt
) const
on t.state = const.state
如果国家的名单很长,这可能是很方便,或者如果你只是想以确保包含一个特定的值。
简单与VALUES
表达式:
SELECT a.state, COALESCE(b.ct, 0) AS ct
FROM (VALUES('done'), ('open'), ('pending'), ('draft'), ('cancel')) a (state)
LEFT JOIN (
SELECT state, count(*) AS ct
FROM crm_lead
GROUP BY state
) b USING (state);
$jsonb = array();
foreach($em as $k => $v) {
$q = "
SELECT a.STATE ,
COALESCE(b.count, 0) AS Count
FROM
(
SELECT 'done' AS STATE
UNION
SELECT 'open' AS STATE
UNION
SELECT 'pending' AS STATE
UNION
SELECT 'draft' AS STATE
UNION
SELECT 'cancel' AS STATE
) a LEFT JOIN
(
SELECT STATE ,
count(*) AS count
FROM crm_lead
WHERE (create_date, create_date) OVERLAPS ('2012-{$nn}-01'::DATE, '2012-{$nn}-{$num}'::DATE)
GROUP BY STATE
) b ON a.STATE = b.STATE
";
$result = retrieve($q);
$jsona = array();
$values = array();
$ev = array();
foreach($result as $key => $val) {
$ev[] = $val['count'];
}
$jsonb[] = array("label" => $v,"values" =>$ev);
}
$jsona[] = array("label" => array(done,open,pending,draft,cancel),"values" => $jsonb);
这是一个完成码去构造要返回给JavaScript JSON对象。 ps。这段代码包含了一些不重要的自定义函数,你可以猜测它们的值。
您是否有另一张包含所有州名的表? –