[英]MySQL alternative to subquery/join
我正在为此查询寻找一种有效的替代子查询/联接的方法。 假设我有一个表,其中存储有关公司的信息,其中包含以下列:
假设从此表中,我想找出每个州有多少公司满足最低收入要求,还有多少公司达到最低雇员人数要求。 这可以表示为以下子查询(也可以写为aa join):
SELECT state,
(
SELECT count(*)
FROM records AS a
WHERE a.state = records.state
AND a.revenue > 1000000
) AS companies_with_min_revenue,
(
SELECT count(*)
FROM records AS a
WHERE a.state = records.state
AND a.employees > 10
) AS companies_with_min_employees
FROM records
WHERE active_business = 1
GROUP BY state
我的问题是这个。 我可以在没有子查询或联接的情况下执行此操作吗? 由于查询已经在每行上进行了迭代(没有索引),因此我可以通过某种方式添加条件:如果该行满足最低收入要求并且处于相同状态,它将为查询增加某种计数器(类似于map / reduce)?
SELECT state
, SUM(CASE WHEN R.revenue > 1000000 THEN 1 ELSE 0 END) AS companies_with_min_revenue
, SUM(CASE WHEN R.employees > 10 THEN 1 ELSE 0 END) AS companies_with_min_employees
FROM records R
WHERE R.active_business = 1
GROUP BY R.state
如您所见,每个记录的值将为1
,并且收入大于1000000
(否则为0),那么我们将得出总和。 另一列也是如此。
感谢这个StackOverflow问题。 当您在Google中搜索“ sql条件计数”时,会发现此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.