Канал Николая Валиотти об аналитике и визуализации данных, data science и BI
SELECT TOP 20
title,
country,
AVG(salary) AS average_salary,
SUM(salary) AS sum_salary,
AVG(salary + payroll_tax) AS average_gross_salary,
SUM(salary + payroll_tax) AS sum_gross_salary,
AVG(salary + payroll_tax + benefits_cost) AS average_gross_cost,
SUM(salary + payroll_tax + benefits_cost) AS sum_gross_cost,
COUNT(*) as count
FROM employees
WHERE salary + payroll_tax + benefits_cost > 0 AND country = 'USA'
GROUP BY title, country
ORDER BY sum_gross_cost
HAVING count > 200
запрос на PRQL будет выглядеть так:
from employees
filter country = "USA"
let gross_salary = salary + payroll_tax
let gross_cost = gross_salary + benefits_cost
filter gross_cost > 0
aggregate by:[title, country] [
average salary,
sum salary,
average gross_salary,
sum gross_salary,
average gross_cost,
sum gross_cost,
count,
]
sort sum_gross_cost
filter count > 200
take 20
ИМХО, не выглядит существенно удобнее / читаемее. А вы как считаете?
2. Malloy — другая попытка заменить SQL от Looker (однако есть примечание, что этот эксперимент без поддержки Google).
Запрос выглядит вот так:
query: table('malloy-data.faa.flights') -> {
where: origin: 'SFO'
group_by: carrier
aggregate: [
flight_count is count()
average_flight_time is flight_time.avg()
]
}
В общем, резюме: каждая метла метет по своему 🥸
А как вам эти варианты замены SQL, что думаете?