[英]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.