mysql子选择新手
我得到的答案是mysql子选择新手,mysql,select,subquery,Mysql,Select,Subquery,我得到的答案是 SELECT a.lead_id, c.state_name AS COL1DATA, count( c.state_name ) AS leadcount, ( SELECT count( won_loss ) AS wonlosscount FROM lead_status WHERE (won_loss = 'loss') AND lead_id = a.lead_id ) AS losscount FROM lead AS a JOIN states AS c ON a
SELECT a.lead_id, c.state_name AS COL1DATA, count( c.state_name ) AS leadcount, (
SELECT count( won_loss ) AS wonlosscount
FROM lead_status
WHERE (won_loss = 'loss')
AND lead_id = a.lead_id
) AS losscount
FROM lead AS a
JOIN states AS c ON a.state_id = c.states_id
GROUP BY c.state_name
ORDER BY losscount DESC
但损失计数应为1和1
任何帮助都会被告知我猜在按状态名称分组的同时,在相关查询中混合非聚合lead\u id会出现问题。也许你可以描述一下你想要得到什么 编辑:基于下面评论中的OP反馈 编辑2:更改为基于聊天会话的左侧外部联接。并非所有潜在客户都具有潜在客户状态
lead_id won_loss won_price won_mainreason loss_mainreason loss_attachment_id lost_dont_sell_note add_note dealer_satisfaction
5 win 4655 pricing fghfg somewhat
8 won 34543 pricing sfdgs satisfied
7 loss service Additional Notes verygood
9 loss not_in_stock Additi satisfied
我可能会说这个版本稍微好一点。但我不想完全改变你的疑问。(我确实更改了别名,因为A和C混淆了。)
输出中包含的lead_id列不可预测,除非该组只有一行。根据你所说的,我怀疑你是否真的想要它。你能发布
lead\u status
的内容吗?没问题。,。。我想要得到的是每个州的总潜在客户数和每个州丢失的潜在客户数见John woo给出的ansewr…他似乎正在达到目标,但还没有达到目标…shawn:总潜在客户数显示为赢得/失去的总数量。。。。例如,我可以有10个领先优势,其中只有2个获胜或3个失败,所以领先优势计数应该是10个失败计数应该是3。显然,在没有看到一些数据的情况下,我们无法猜测最终的数字。count(l.lead\u id)
表达式将计算每组的行数,而不考虑赢得的损失值。shawn它现在不这样做…如果我的总损失数=2(假设状态1损失=1,状态2损失=1),则总潜在客户数显示为(leadcount)=2@NMFSDF我不确定我是否遵循了这一点,但听起来要么没有足够的数据来描述整个画面,要么你可能误解了数字。您给出的一些评论的描述非常简单。你可能遗漏了一个小细节吗?如果你公布所有表格数据,我可以很快给你答案。
lead_id won_loss won_price won_mainreason loss_mainreason loss_attachment_id lost_dont_sell_note add_note dealer_satisfaction
5 win 4655 pricing fghfg somewhat
8 won 34543 pricing sfdgs satisfied
7 loss service Additional Notes verygood
9 loss not_in_stock Additi satisfied
SELECT
s.state_name AS COL1DATA, count(c.state_name) AS leadcount,
sum(case when ls.won_loss = 'loss' then 1 else 0 end) as losscount
FROM
lead AS l
INNER JOIN states AS s ON s.state_id = l.states_id
LEFT OUTER JOIN lead_status as ls on ls.lead_id = l.lead_id
GROUP BY s.state_name
ORDER BY losscount DESC
SELECT
min(s.state_name) AS COL1DATA,
count(l.lead_id) AS leadcount, /* counting non-nullable key on the outer side */
sum(case when ls.won_loss = 'loss' then 1 else 0 end) as losscount
FROM
lead AS l
INNER JOIN states AS s ON s.state_id = l.states_id
LEFT OUTER JOIN lead_status as ls on ls.lead_id = l.lead_id
GROUP BY s.state_id /* might be better to group on the id */
ORDER BY losscount DESC