Как выбрать медианное значение?

Может ли кто-нибудь мне подсказать, как найти медианное значение для «налога» в период с 12.04.18 по 16.04.18:

user_id  login_time  tax
3       2018-04-15   16625000
5       2018-04-16      
6       2018-04-17   296470000
6       2018-04-16   192519750
6       2018-04-15   4455500
6       2018-04-13   17125
6       2018-04-12   120180000
7       2018-04-18   24060000
7       2018-04-17   42959500

Результат равен 16625000 (потому что есть значение NULL. Нам нужно использовать его как 0).

Спасибо за внимание к моему вопросу!

SELECT AVG(NVL(tax, 0)) from ...?
SMA 09.09.2018 17:56

@SMA: медиана - это не то же самое, что среднее (также называемое средним). AVG дает среднее, а не медианное значение.

Steffen Ullrich 09.09.2018 18:04
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
2
205
1

Ответы 1

Медиана - это значение

  • расположен точно в середине нечетного набора данных.
  • Или среднее из двух средних значений в четном наборе данных.

Итак, рассмотрев эти два случая, первое, что вам нужно, это количество строк данных. Затем вам нужно решить (простой случай), выбрать ли вы значение посередине или вам нужно среднее из двух значений (не забудьте применить сортировку до выбора фактических значений):

Для этого я бы использовал небольшой «код»:

Псевдокод:

1.) SELECT count(id) AS val FROM myTable WHERE datetime ... //$val=9
2.) Programming language: $lim = floor($val/2); // $lim=4

if odd($val){
  3.) SELECT tax FROM myTable WHERE datetime [...] ORDER BY tax LIMIT $lim,1 
}

else if even($val){
  3.) Programming language: $lim -=1; // if $val was 10, we want row 4 and 5
  4.) SELECT AVG(tax) AS tax FROM 
       (SELECT * FROM myTable WHERE datetime [...] ORDER BY tax LIMIT $lim,2) AS tmp
}
[...]
echo "Median is: ". $row["tax"];

спасибо, можно ли решить эту задачу без использования $?

Елисей Горьков 09.09.2018 19:48

@ ЕлисейГорьков уверен, что это всего лишь пример объявления переменной. Вы должны использовать объявление, поддерживаемое вашим языком программирования.

dognose 09.09.2018 20:00

Я использую вашу подсказку, но у меня трудности. Это мой запрос: 1) SELECT count (user_id) from activity where login_time between '2018-04-12' and '2018-04-16'; 2) ВЫБЕРИТЕ налог из активности, где время входа в систему находится между «2018-04-12» и «2018-04-16» в порядке налогообложения; 3) ВЫБРАТЬ СРЕДНЕЕ (налог) в качестве налога из (выберите * из активности, где время_входа находится между '2018-04-12' и '2018-04-16', в порядке налогообложения) d; Что здесь не так?

Елисей Горьков 09.09.2018 20:45

@ ЕлисейГорьков: трудно сказать, можете ли вы обновить свой первоначальный пост результатами, которые вы получаете от каждого запроса? Тогда мы сможем понять, что идет не так. Здесь важна часть LIMIT, так как она определяет, какие значения извлекать из базы данных!

dognose 09.09.2018 20:59

Другие вопросы по теме