Я пытаюсь выполнить запрос, чтобы найти количество и процент ремесленников в зависимости от пола. Запрос выполняется абсолютно нормально на сервере SQL 8. Но не на моем реальном сервере, а это 4.9.5. Ниже мой запрос.

SELECT industry
       , count(*) as cnt
       , (count(*)*100.0/sum(count(*))over()) as perc 
FROM `artisan_work` 
GROUP BY industry 
ORDER BY cnt DESC 
0
Husnain Yusufi 4 Май 2021 в 18:17

2 ответа

Лучший ответ
SELECT industry
       , count(*) as cnt
       , ((select count(*) from artisan_work b where a.industry=b.industry)*100.0/count(*)) as perc 
FROM artisan_work  a
GROUP BY industry 
ORDER BY cnt DESC 
0
Kazi Mohammad Ali Nur 4 Май 2021 в 16:03

В любой базе данных вы должны уметь использовать:

SELECT aw.industry, count(*) as cnt,
       count(*) * 100.0 / tot.cnt as perc 
FROM artisan_work aw cross join
     (SELECT COUNT(*) as cnt FROM artisan_work) tot
GROUP BY aw.industry 
ORDER BY cnt DESC 
0
Gordon Linoff 4 Май 2021 в 15:19