Is there a better way to find the high-waterline values in a column in SQL?
Assume there is a table with a float column and a CSV with header with the same name and the name numbers below it.
CsvPath Validation Language can find the new high value lines using a one-line csvpath.
I want to make the best apples-to-apples comparison of the SQL way to the csvpath one-liner. This works, but could there be a better way?
~
This csvpath finds all the new high-value thresholds in a CSV file.
It gives the same output as this SQL:
SELECT
id,
worker_hours_this_period
FROM(
SELECT
id,
worker_hours_this_period,
MAX(worker_hours_this_period)
OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS max_prev_value
FROM
projects
) AS subquery
WHERE
worker_hours_this_period > max_prev_value OR max_prev_value IS NULL;
id: New high value csvpath
test-data: examples/headers/projects_with_reset.csv
~
$[1*][
@hours.onchange.increase = float(#worker_hours_this_period)
print.onmatch("line: $.csvpath.line_number: $.variables.hours")
]
Top comments (0)