查询语句1
SELECT MONTH(`询盘表`.`询盘日期`)as `月份`, `询盘表`.`来源`, count(`询盘表`.id) `询盘` FROM `询盘表` GROUP BY MONTH(`询盘表`.`询盘日期`), `询盘表`.`来源`
查询语句2
SELECT MONTH(`询盘表`.`询盘日期`) as `月份`, `询盘表`.`来源`, count(`询盘表`.`有效否`)as `有效` FROM `询盘表` WHERE `询盘表`.`有效否` = '有' GROUP BY MONTH(`询盘表`.`询盘日期`), `询盘表`.`来源`
合并成
--原语句1
SELECT MONTH(`询盘表`.`询盘日期`)as `月份`
, `询盘表`.`来源`
, count(`询盘表`.id) `询盘`
FROM `询盘表`
GROUP BY MONTH(`询盘表`.`询盘日期`), `询盘表`.`来源`
--原语句2
SELECT MONTH(`询盘表`.`询盘日期`) as `月份`
, `询盘表`.`来源`
, count(`询盘表`.`有效否`)as `有效`
FROM `询盘表`
WHERE `询盘表`.`有效否` = '有'
GROUP BY MONTH(`询盘表`.`询盘日期`), `询盘表`.`来源`
-- 合并后语句
SELECT MONTH(`询盘表`.`询盘日期`) as `月份`
, `询盘表`.`来源`
, count(`询盘表`.id) `询盘`
, sum(case when `询盘表`.`有效否` = '有' then 1 else 0 end) as `有效`
FROM `询盘表`
GROUP BY MONTH(`询盘表`.`询盘日期`), `询盘表`.`来源`
group 的时候,本身就可以根据条件进行计算的,把符合条件的汇总或求和或求平均都是支持的
SELECT MONTH(`询盘表`.`询盘日期`)as `月份`, `询盘表`.`来源`, count(`询盘表`.id) `询盘` FROM `询盘表` GROUP BY MONTH(`询盘表`.`询盘日期`), `询盘表`.`来源`
union all
SELECT MONTH(`询盘表`.`询盘日期`) as `月份`, `询盘表`.`来源`, count(`询盘表`.`有效否`)as `有效` FROM `询盘表` WHERE `询盘表`.`有效否` = '有' GROUP BY MONTH(`询盘表`.`询盘日期`), `询盘表`.`来源`
优化SQL的话 楼上正解 和平两个sql 的话使用 union all
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632