У меня есть база данных, в которой я храню показания направления ветра в градусах. Мне нужно сделать две вещи на самом деле, мне нужно сгруппировать все показания по 45 (в основном 45 градусов между "N", "NE", "E", "SE", "S", "SW", "W" и " NW "), а затем мне нужно найти процент каждой из этих групп во всех чтениях.
Это то место, где я до сих пор застрял, мне удалось сгруппировать только по read_direction (пропуская часть, как на 45) и мне удалось отобразить процент.
select
reading_winddirection,
count,
round(count / total * 100) postotak
from
(
select reading_winddirection, count(reading_winddirection) count
from simulation_readings
group by reading_winddirection
) c
JOIN (
select count(*) total from simulation_readings
) t
Это моя скрипка: MySql
За последние 30i sh минут мне удалось выяснить, как группировать по диапазонам чисел, так что это половина моей проблемы:
SELECT `reading_winddirection`,
Count(*) AS num
FROM (SELECT CASE
WHEN `reading_winddirection` >= 1
AND `reading_winddirection` < 45 THEN '0-45'
WHEN `reading_winddirection` >= 45
AND `reading_winddirection` < 90 THEN '45-90'
WHEN `reading_winddirection` >= 90
AND `reading_winddirection` < 135 THEN '90-135'
WHEN `reading_winddirection` >= 135
AND `reading_winddirection` < 180 THEN '135-180'
WHEN `reading_winddirection` >= 180
AND `reading_winddirection` < 225 THEN '180-225'
WHEN `reading_winddirection` >= 225
AND `reading_winddirection` < 270 THEN '225-270'
WHEN `reading_winddirection` >= 270
AND `reading_winddirection` < 315 THEN '270-315'
WHEN `reading_winddirection` >= 315
AND `reading_winddirection` < 360 THEN '315-360'
end AS `reading_winddirection`
FROM simulation_readings
WHERE 1) AS price_summaries
GROUP BY reading_winddirection
Мне просто нужно выяснить, каков процент всех групп в подсчете (*)