From: | Bret Stern <bret_stern(at)machinemanagement(dot)com> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Sort question - Fractions, Metric etc |
Date: | 2021-08-14 20:24:49 |
Message-ID: | 643df9bf-7378-93fb-1c8c-fe31f08ec214@machinemanagement.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Here's the clip of the UI. The user selects whatever value the vendor
provides for unit thickness. The data entry
people aren't comfortable converting.
At this point the sort_order column managed to do the trick....but going
forward on my next
application, I can see a different approach.
Are you suggesting a function like this shellsort used with an array.
https://www.geeksforgeeks.org/shellsort/
// C++ implementation of Shell Sort
#include <iostream>
using namespace std;
/* function to sort arr using shellSort */
int shellSort(int arr[], int n)
{
// Start with a big gap, then reduce the gap
for (int gap = n/2; gap > 0; gap /= 2)
{
// Do a gapped insertion sort for this gap size.
// The first gap elements a[0..gap-1] are already in gapped order
// keep adding one more element until the entire array is
// gap sorted
for (int i = gap; i < n; i += 1)
{
// add a[i] to the elements that have been gap sorted
// save a[i] in temp and make a hole at position i
int temp = arr[i];
// shift earlier gap-sorted elements up until the correct
// location for a[i] is found
int j;
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap)
arr[j] = arr[j - gap];
// put temp (the original a[i]) in its correct location
arr[j] = temp;
}
}
return 0;
}
void printArray(int arr[], int n)
{
for (int i=0; i<n; i++)
cout << arr[i] << " ";
}
int main()
{
int arr[] = {12, 34, 54, 2, 3}, i;
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Array before sorting: \n";
printArray(arr, n);
shellSort(arr, n);
cout << "\nArray after sorting: \n";
printArray(arr, n);
return 0;
}
Array before sorting:
12 34 54 2 3
Array after sorting:
2 3 12 34 54
On 8/14/2021 12:51 PM, Gogala, Mladen wrote:
> I would write a stable function converting everything to metric (or
> imperial, depends on your preferences) and sort on the return of the
> function. Since unit conversion functions do not need to modify the
> database and should always return the same values for the same
> arguments, the function can be used within a query (that is the
> meaning of the keyword "STABLE") and you can use it for sorting stuff
>
> Regards
>
> On 8/14/2021 12:14 PM, Bret Stern wrote:
>> I have a table with metric, imperial, fraction columns.
>>
>> Is there a way to sort correctly using imperial (eg; .125, .375, .437
>> -> 1., 1.125)
>>
>> Couldn't handle it with ORDER BY ASC, DESC args so I added a
>> sort_column and sorted based
>>
>> on those values eg; 1,2,3,4,5,6 indicating the value I need to show
>> in which sequence.
>>
>>
>> Just curious what the pro's do
>>
>> Bret
>>
>>
Attachment | Content-Type | Size |
---|---|---|
sort_snap.jpg | image/jpeg | 140.8 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Adrian Klaver | 2021-08-14 20:43:44 | Re: Sort question - Fractions, Metric etc |
Previous Message | Guyren Howe | 2021-08-14 20:13:21 | Re: Sort question - Fractions, Metric etc |