SELECT COUNT(*) AS cnt FROM (SELECT m.enterprise_id,
COALESCE(e.name, '-') AS enterprise_name,
e.industry,
e.city,
e.scale,
e.logo,
e.score_overall,
e.review_count,
e.position_count,
COALESCE(m.pos_cnt, 0) AS pos_cnt,
COALESCE(m.ss_cnt, 0) AS ss_cnt,
(COALESCE(m.pos_cnt, 0) + COALESCE(m.ss_cnt, 0)) AS total_cnt,
ROUND(m.weighted_avg) AS avg_salary
FROM (
SELECT enterprise_id, pos_cnt, ss_cnt,
(pos_cnt * COALESCE(pos_avg, 0) + ss_cnt * COALESCE(ss_avg, 0)) / (pos_cnt + ss_cnt) AS weighted_avg
FROM (
SELECT COALESCE(a.enterprise_id, b.enterprise_id) AS enterprise_id,
COALESCE(a.pos_cnt, 0) AS pos_cnt,
COALESCE(b.ss_cnt, 0) AS ss_cnt,
a.pos_avg,
b.ss_avg
FROM (SELECT p.enterprise_id,
COUNT(*) AS pos_cnt,
ROUND(AVG((IFNULL(p.min_salary,0)+IFNULL(p.max_salary,0))/2)) AS pos_avg
FROM position p
INNER JOIN enterprise e ON e.id = p.enterprise_id AND e.status = 1
WHERE p.status = 1 AND (p.min_salary > 0 OR p.max_salary > 0)
AND e.city LIKE '%西安%'
GROUP BY p.enterprise_id) a
LEFT JOIN (SELECT ss.enterprise_id,
COUNT(*) AS ss_cnt,
ROUND(AVG(ss.month_salary)) AS ss_avg
FROM salary_share ss
INNER JOIN enterprise e ON e.id = ss.enterprise_id AND e.status = 1
WHERE ss.status = 1 AND ss.month_salary > 0
AND e.city LIKE '%西安%'
GROUP BY ss.enterprise_id) b ON a.enterprise_id = b.enterprise_id
UNION
SELECT COALESCE(a.enterprise_id, b.enterprise_id) AS enterprise_id,
COALESCE(a.pos_cnt, 0),
COALESCE(b.ss_cnt, 0),
a.pos_avg,
b.ss_avg
FROM (SELECT p.enterprise_id,
COUNT(*) AS pos_cnt,
ROUND(AVG((IFNULL(p.min_salary,0)+IFNULL(p.max_salary,0))/2)) AS pos_avg
FROM position p
INNER JOIN enterprise e ON e.id = p.enterprise_id AND e.status = 1
WHERE p.status = 1 AND (p.min_salary > 0 OR p.max_salary > 0)
AND e.city LIKE '%西安%'
GROUP BY p.enterprise_id) a
RIGHT JOIN (SELECT ss.enterprise_id,
COUNT(*) AS ss_cnt,
ROUND(AVG(ss.month_salary)) AS ss_avg
FROM salary_share ss
INNER JOIN enterprise e ON e.id = ss.enterprise_id AND e.status = 1
WHERE ss.status = 1 AND ss.month_salary > 0
AND e.city LIKE '%西安%'
GROUP BY ss.enterprise_id) b ON a.enterprise_id = b.enterprise_id
) AS u
WHERE (COALESCE(pos_cnt,0) + COALESCE(ss_cnt,0)) >= 1
) AS m
INNER JOIN enterprise e ON e.id = m.enterprise_id
ORDER BY m.weighted_avg DESC) AS t [ RunTime:0.027444s ]
SELECT * FROM (SELECT m.enterprise_id,
COALESCE(e.name, '-') AS enterprise_name,
e.industry,
e.city,
e.scale,
e.logo,
e.score_overall,
e.review_count,
e.position_count,
COALESCE(m.pos_cnt, 0) AS pos_cnt,
COALESCE(m.ss_cnt, 0) AS ss_cnt,
(COALESCE(m.pos_cnt, 0) + COALESCE(m.ss_cnt, 0)) AS total_cnt,
ROUND(m.weighted_avg) AS avg_salary
FROM (
SELECT enterprise_id, pos_cnt, ss_cnt,
(pos_cnt * COALESCE(pos_avg, 0) + ss_cnt * COALESCE(ss_avg, 0)) / (pos_cnt + ss_cnt) AS weighted_avg
FROM (
SELECT COALESCE(a.enterprise_id, b.enterprise_id) AS enterprise_id,
COALESCE(a.pos_cnt, 0) AS pos_cnt,
COALESCE(b.ss_cnt, 0) AS ss_cnt,
a.pos_avg,
b.ss_avg
FROM (SELECT p.enterprise_id,
COUNT(*) AS pos_cnt,
ROUND(AVG((IFNULL(p.min_salary,0)+IFNULL(p.max_salary,0))/2)) AS pos_avg
FROM position p
INNER JOIN enterprise e ON e.id = p.enterprise_id AND e.status = 1
WHERE p.status = 1 AND (p.min_salary > 0 OR p.max_salary > 0)
AND e.city LIKE '%西安%'
GROUP BY p.enterprise_id) a
LEFT JOIN (SELECT ss.enterprise_id,
COUNT(*) AS ss_cnt,
ROUND(AVG(ss.month_salary)) AS ss_avg
FROM salary_share ss
INNER JOIN enterprise e ON e.id = ss.enterprise_id AND e.status = 1
WHERE ss.status = 1 AND ss.month_salary > 0
AND e.city LIKE '%西安%'
GROUP BY ss.enterprise_id) b ON a.enterprise_id = b.enterprise_id
UNION
SELECT COALESCE(a.enterprise_id, b.enterprise_id) AS enterprise_id,
COALESCE(a.pos_cnt, 0),
COALESCE(b.ss_cnt, 0),
a.pos_avg,
b.ss_avg
FROM (SELECT p.enterprise_id,
COUNT(*) AS pos_cnt,
ROUND(AVG((IFNULL(p.min_salary,0)+IFNULL(p.max_salary,0))/2)) AS pos_avg
FROM position p
INNER JOIN enterprise e ON e.id = p.enterprise_id AND e.status = 1
WHERE p.status = 1 AND (p.min_salary > 0 OR p.max_salary > 0)
AND e.city LIKE '%西安%'
GROUP BY p.enterprise_id) a
RIGHT JOIN (SELECT ss.enterprise_id,
COUNT(*) AS ss_cnt,
ROUND(AVG(ss.month_salary)) AS ss_avg
FROM salary_share ss
INNER JOIN enterprise e ON e.id = ss.enterprise_id AND e.status = 1
WHERE ss.status = 1 AND ss.month_salary > 0
AND e.city LIKE '%西安%'
GROUP BY ss.enterprise_id) b ON a.enterprise_id = b.enterprise_id
) AS u
WHERE (COALESCE(pos_cnt,0) + COALESCE(ss_cnt,0)) >= 1
) AS m
INNER JOIN enterprise e ON e.id = m.enterprise_id
ORDER BY m.weighted_avg DESC) AS t LIMIT 20 OFFSET 0 [ RunTime:0.026687s ]
SELECT e.city, COUNT(DISTINCT e.id) AS cnt, ROUND(AVG(t.wa)/1000, 1) AS avg_k
FROM (
SELECT enterprise_id, (pos_cnt * COALESCE(pos_avg, 0) + ss_cnt * COALESCE(ss_avg, 0)) / (pos_cnt + ss_cnt) AS wa
FROM (
SELECT COALESCE(a.enterprise_id, b.enterprise_id) AS enterprise_id,
COALESCE(a.pos_cnt, 0) AS pos_cnt, COALESCE(b.ss_cnt, 0) AS ss_cnt,
a.pos_avg, b.ss_avg
FROM (SELECT p.enterprise_id,
COUNT(*) AS pos_cnt,
ROUND(AVG((IFNULL(p.min_salary,0)+IFNULL(p.max_salary,0))/2)) AS pos_avg
FROM position p
INNER JOIN enterprise e ON e.id = p.enterprise_id AND e.status = 1
WHERE p.status = 1 AND (p.min_salary > 0 OR p.max_salary > 0)
AND e.city LIKE '%西安%'
GROUP BY p.enterprise_id) a LEFT JOIN (SELECT ss.enterprise_id,
COUNT(*) AS ss_cnt,
ROUND(AVG(ss.month_salary)) AS ss_avg
FROM salary_share ss
INNER JOIN enterprise e ON e.id = ss.enterprise_id AND e.status = 1
WHERE ss.status = 1 AND ss.month_salary > 0
AND e.city LIKE '%西安%'
GROUP BY ss.enterprise_id) b ON a.enterprise_id = b.enterprise_id
UNION
SELECT COALESCE(a.enterprise_id, b.enterprise_id),
COALESCE(a.pos_cnt, 0), COALESCE(b.ss_cnt, 0),
a.pos_avg, b.ss_avg
FROM (SELECT p.enterprise_id,
COUNT(*) AS pos_cnt,
ROUND(AVG((IFNULL(p.min_salary,0)+IFNULL(p.max_salary,0))/2)) AS pos_avg
FROM position p
INNER JOIN enterprise e ON e.id = p.enterprise_id AND e.status = 1
WHERE p.status = 1 AND (p.min_salary > 0 OR p.max_salary > 0)
AND e.city LIKE '%西安%'
GROUP BY p.enterprise_id) a RIGHT JOIN (SELECT ss.enterprise_id,
COUNT(*) AS ss_cnt,
ROUND(AVG(ss.month_salary)) AS ss_avg
FROM salary_share ss
INNER JOIN enterprise e ON e.id = ss.enterprise_id AND e.status = 1
WHERE ss.status = 1 AND ss.month_salary > 0
AND e.city LIKE '%西安%'
GROUP BY ss.enterprise_id) b ON a.enterprise_id = b.enterprise_id
) AS u WHERE (COALESCE(pos_cnt,0)+COALESCE(ss_cnt,0))>=1
) AS t
INNER JOIN enterprise e ON e.id = t.enterprise_id
WHERE e.city <> ''
GROUP BY e.city HAVING cnt >= 2
ORDER BY avg_k DESC LIMIT 10 [ RunTime:0.020656s ]
SELECT e.industry, COUNT(DISTINCT e.id) AS cnt,
ROUND(AVG(t.wa)/1000, 1) AS avg_k
FROM (
SELECT enterprise_id, (pos_cnt*COALESCE(pos_avg,0)+ss_cnt*COALESCE(ss_avg,0))/(pos_cnt+ss_cnt) AS wa
FROM (
SELECT COALESCE(a.enterprise_id,b.enterprise_id) AS enterprise_id,
COALESCE(a.pos_cnt,0) AS pos_cnt, COALESCE(b.ss_cnt,0) AS ss_cnt,
a.pos_avg, b.ss_avg
FROM (SELECT p.enterprise_id, COUNT(*) AS pos_cnt,
ROUND(AVG((IFNULL(p.min_salary,0)+IFNULL(p.max_salary,0))/2)) AS pos_avg
FROM position p
INNER JOIN enterprise e ON e.id = p.enterprise_id AND e.status = 1
WHERE p.status = 1 AND (p.min_salary > 0 OR p.max_salary > 0)
GROUP BY p.enterprise_id) a LEFT JOIN (SELECT ss.enterprise_id, COUNT(*) AS ss_cnt, ROUND(AVG(ss.month_salary)) AS ss_avg
FROM salary_share ss
INNER JOIN enterprise e ON e.id = ss.enterprise_id AND e.status = 1
WHERE ss.status = 1 AND ss.month_salary > 0
GROUP BY ss.enterprise_id) b ON a.enterprise_id = b.enterprise_id
UNION
SELECT COALESCE(a.enterprise_id,b.enterprise_id) AS enterprise_id,
COALESCE(a.pos_cnt,0) AS pos_cnt, COALESCE(b.ss_cnt,0) AS ss_cnt,
a.pos_avg, b.ss_avg
FROM (SELECT p.enterprise_id, COUNT(*) AS pos_cnt,
ROUND(AVG((IFNULL(p.min_salary,0)+IFNULL(p.max_salary,0))/2)) AS pos_avg
FROM position p
INNER JOIN enterprise e ON e.id = p.enterprise_id AND e.status = 1
WHERE p.status = 1 AND (p.min_salary > 0 OR p.max_salary > 0)
GROUP BY p.enterprise_id) a RIGHT JOIN (SELECT ss.enterprise_id, COUNT(*) AS ss_cnt, ROUND(AVG(ss.month_salary)) AS ss_avg
FROM salary_share ss
INNER JOIN enterprise e ON e.id = ss.enterprise_id AND e.status = 1
WHERE ss.status = 1 AND ss.month_salary > 0
GROUP BY ss.enterprise_id) b ON a.enterprise_id = b.enterprise_id
) AS u WHERE (COALESCE(pos_cnt,0)+COALESCE(ss_cnt,0))>=1
) AS t
INNER JOIN enterprise e ON e.id = t.enterprise_id
WHERE e.industry <> ''
GROUP BY e.industry HAVING cnt >= 1
ORDER BY avg_k DESC LIMIT 10 [ RunTime:0.045485s ]