Get last N rows ordered ascending without using nested SELECTs [closed] - postgresql

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 1 year ago.
Improve this question
I'd like to get the last N rows in ascending order. Is it possible without using nested SELECTs?
The reason of this question if it is know if there is other way more efficient.
Nested selects:
select id, timestamp, col3, col4
from (
select * from t_myTable
order by timestamp DESC LIMIT 5
) as d
order by timestamp ASC
The id column is auto-incremental.
thanks.

Since you need two different orderings, I cannot imagine that there is a different way to do it without a subquery. And even if there were, I am pretty confident that that query would be more complicated and would perform worse.

Related

Postgresql how to do min and max with the name beside the value [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 months ago.
Improve this question
this is the data table
how to do to get below result:
Here is the result i want to get
I only can get lowest and highest without (name), any ideas to get above result?
Use GROUP BY for grouping the subjects and then fetch max_mark, min_mark using MAX(), MIN() functions respectively
SELECT subject AS "sub1",
MAX(scc) AS "max_mark",
MIN(scc) AS "min_mark"
FROM Subjects_mark
GROUP BY 1
Now use subquery for formatting the output
SELECT sub1,
CONCAT(min_mark,'(',studentnar,')') AS "lowest point",
CONCAT(max_mark,'(',studentnar,')') AS "highest point"
FROM Subjects_mark AS s1
JOIN (
SELECT subjects AS "sub1",
MAX(scc) AS "max_mark",
MIN(scc) AS "min_mark"
FROM Subjects_mark
GROUP BY 1
) AS dt
ON dt.sub1 = s1.subjects
AND dt.max_mark = s1.scc

Why the "Group BY" by month didn't work? [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 4 years ago.
Improve this question
Why the result of this query is always one :
SELECT stats1.cnt1 FROM staging.memberships_autoship_box b JOIN staging.memberships_autoship a ON a.id = b.autoship_box_id JOIN (SELECT COUNT(bn.autoship_box_id) cnt1,bn.autoship_box_id FROM staging.memberships_autoship_box bn GROUP BY bn.autoship_box_id ) stats1 ON
(stats1.autoship_box_id = a.id)
The group by clause, unlike the order by clause, doesn't take column ordinals. In this clause, 1 and 2 are just integer literals, and since every row of your query has the same value for these two literals, they are all grouped in to a single result row.
Instead, you should use the actual columns from your query:
GROUP BY sql_activity_days.styleship_start_month, memberCountSql."122_days"

newline character in Postgresql [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
How can we get this output
results from query should be like:
Assessment
penalty
both values are coming from two different columns. I want to join these two columns but want results like above in single cell. so there should be new line for second column(but in same cell)
select assessment || E'\n' || penalty from wherever
or
select concat_ws(chr(10), assessment, penalty) from wherever
Note: I am assuming, since you didn't say, that neither column can be null.

Save a ordering list of data into core data [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
i have an nstableview, where the user can add rows.
each row will directly save into Core data.
at the moment i can request the records of core data and sort it by objects id to get the correct order, because the object id is nearly the same like an incremental number.
but now the user can reorder the rows.
how can i save this new order of rows into core data?
Using the id as a way to order is not guaranteed to work, so you shouldn't do that.
Instead, add a field that represents the order.
What we do is have a field called pos that is in integer and we set it sparsely. The first record can be 100, the second 200, etc. Then when we re-order, we set pos to the mid-point of the records right before and after. Every once in a while, you need to re-number the records. The more sparse you do it, the less you need to re-number.
When you add a new record set it to the max value + 100 (or whatever spacing you are using)

Find Last 5 columns of a table [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
Is there a way to find the values of last 5 columns of a table?
Suppose if i have a table of 20 columns, i want to select all the values from the last 5 columns.
Any help will be appreciated. Thanks in advance.
Don't. It's stupid.
There shouldn't really be any order to the columns - they should just have names. It's just a convenience when testing or sitting at a DB console that SELECT * gives you them all.
There are very few cases where SELECT * makes sense in a live system. I can't think of any where you want whatever columns happen to be "last" on a table.
If you are really committed to doing this then you'll have to query the information-schema or system catalogues. Get a list of the columns on a particular table and then build your SQL to query them.
However, if you aren't in control of this table then it's a meaningless task since you won't know what the information means. If you are in control of the table then you know what column-names there are and that's a better way to do it.
Seems simple enough unless I misunderstood.
Select col16, col17, col18, col19, col20
From yourtable
i got the answer
SELECT column_name
FROM information_schema.columns
WHERE table_name='your_table'
order by ordinal_position
From ordinal_position we can get last 'n' columns we want.
Thanks for all the answers.