public double distance(Double latitude, Double longitude, double e, double f) {
double d2r = Math.PI / 180;
double dlong = (longitude - f) * d2r;
double dlat = (latitude - e) * d2r;
double a = Math.pow(Math.sin(dlat / 2.0), 2) + Math.cos(e * d2r)
* Math.cos(latitude * d2r) * Math.pow(Math.sin(dlong / 2.0), 2)
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = 6367 * c;
return d;
}
Если вам нужно выбрать всех сотрудников со вторым окладом, используйте фильтр
dense_rank() over(partition by department order by salary desc) = 2
. Он вернет всем сотрудникам вторую зарплату.
Если в отделе есть только 1 запись (второй зарплаты нет, один сотрудник в отделе), она будет оценена как 1, и вы не получите никаких записей для этого отдела фильтрации с плотным_ранком = 2.
[115 ] Если вам нужно выбрать только одну запись (не всех сотрудников) со вторым окладом, тогда сработаетrow_number() over(partition by department order by salary desc) = 2
, но он выберет одного случайного сотрудника со вторым окладом, если много сотрудников со вторым окладом. Только одна запись будет помечена row_number = 2.