How to get repeatable partition as new one after another partition?How to get a list of user accounts using the command line in MySQL?How to get the sizes of the tables of a MySQL database?Group OHLC-Stockmarket Data into multiple timeframes - MysqlReason for Column is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clauseIdentifying repeated fields in SQL queryOracle Partition By to get data from multiple groupsHow do I select each data set from a Row_Number Over Partition by table based on the Row_Number Over Partition by column?MySQL how to select first row each group with countOracle - Get min & max date from group of rowsWindow functions: PARTITION BY one column after ORDER BY another

Is it a problem if <h4>, <h5> and <h6> are smaller than regular text?

Why doesn't Adrian Toomes give up Spider-Man's identity?

Can an Aarakocra use a shield while flying?

What is the giant octopus in the torture chamber for?

Payment instructions allegedly from HomeAway look fishy to me

Inconsistent behavior of compiler optimization of unused string

Is using haveibeenpwned to validate password strength rational?

PhD - Well known professor or well known school?

Using "subway" as name for London Underground?

Why only the fundamental frequency component is said to give useful power?

Was the Tamarian language in "Darmok" inspired by Jack Vance's "The Asutra"?

Interview not reimboursed if offer is made but not accepted

How to chain Python function calls so the behaviour is as follows

What's the largest optical telescope mirror ever put in space?

Russian equivalents of "no love lost"

What makes Ada the language of choice for the ISS's safety-critical systems?

Chemmacros scheme translation

Is it possible to 'live off the sea'

Why would future John risk sending back a T-800 to save his younger self?

Was there a priest on the Titanic who stayed on the ship giving confession to as many as he could?

Find the Factorial From the Given Prime Relationship

Winning Strategy for the Magician and his Apprentice

Is open-sourcing the code of a webapp not recommended?

What is wrong with this proof that symmetric matrices commute?



How to get repeatable partition as new one after another partition?


How to get a list of user accounts using the command line in MySQL?How to get the sizes of the tables of a MySQL database?Group OHLC-Stockmarket Data into multiple timeframes - MysqlReason for Column is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clauseIdentifying repeated fields in SQL queryOracle Partition By to get data from multiple groupsHow do I select each data set from a Row_Number Over Partition by table based on the Row_Number Over Partition by column?MySQL how to select first row each group with countOracle - Get min & max date from group of rowsWindow functions: PARTITION BY one column after ORDER BY another






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















"Partition by" in OVER clause groups all of the values as unique, just like "Distinct" or "Group by" do.



This is how it works in my query with row_number():



 id st t row_number
-------------------
1 1 1 1
1 1 2 2
1 1 3 3
2 1 3 1
1 2 4 1
1 1 10 4


This is what I want:



 id st t uniq_row_number
------------------
1 1 1 1
1 1 2 2
1 1 3 3
2 1 3 1
1 2 4 1
1 1 10 1


No matter if new string already was before, it's read as new partition after every change of partition.
If partition repeats, so uniq_row_number gets +1. If new partition comes with new string: boom, it gets uniq_row_number 1.



My SQL query:



 SELECT id, st, t,
row_number() OVER (PARTITION BY id, st ORDER BY id, st) cat_num,
min(t) over (PARTITION BY id, st) min_t,
max(t) over (PARTITION BY id, st) max_t
FROM tabl ORDER BY t;


SQL code is here: http://sqlfiddle.com/#!18/d4290/2










share|improve this question






















  • "if new string already was before" - To say that one row was before the other, you need a column (or a set of columns) that determines an order. So what are these columns? Why is (1, 2, 4) before (1, 1, 10)?

    – Paul Spiegel
    Mar 24 at 17:05











  • @paul-spiegel, in this example I coded row_number() OVER (PARTITION BY id, st) row_number, two columns. So in last row I got '4' near '1 1 10', because '1 1' was already in first, second and third rows. I want not '4' but '1' near ' 1 1 10', because between third and sixth lines there is another partition in.

    – Andrey Yashin
    Mar 24 at 18:49

















0















"Partition by" in OVER clause groups all of the values as unique, just like "Distinct" or "Group by" do.



This is how it works in my query with row_number():



 id st t row_number
-------------------
1 1 1 1
1 1 2 2
1 1 3 3
2 1 3 1
1 2 4 1
1 1 10 4


This is what I want:



 id st t uniq_row_number
------------------
1 1 1 1
1 1 2 2
1 1 3 3
2 1 3 1
1 2 4 1
1 1 10 1


No matter if new string already was before, it's read as new partition after every change of partition.
If partition repeats, so uniq_row_number gets +1. If new partition comes with new string: boom, it gets uniq_row_number 1.



My SQL query:



 SELECT id, st, t,
row_number() OVER (PARTITION BY id, st ORDER BY id, st) cat_num,
min(t) over (PARTITION BY id, st) min_t,
max(t) over (PARTITION BY id, st) max_t
FROM tabl ORDER BY t;


SQL code is here: http://sqlfiddle.com/#!18/d4290/2










share|improve this question






















  • "if new string already was before" - To say that one row was before the other, you need a column (or a set of columns) that determines an order. So what are these columns? Why is (1, 2, 4) before (1, 1, 10)?

    – Paul Spiegel
    Mar 24 at 17:05











  • @paul-spiegel, in this example I coded row_number() OVER (PARTITION BY id, st) row_number, two columns. So in last row I got '4' near '1 1 10', because '1 1' was already in first, second and third rows. I want not '4' but '1' near ' 1 1 10', because between third and sixth lines there is another partition in.

    – Andrey Yashin
    Mar 24 at 18:49













0












0








0


0






"Partition by" in OVER clause groups all of the values as unique, just like "Distinct" or "Group by" do.



This is how it works in my query with row_number():



 id st t row_number
-------------------
1 1 1 1
1 1 2 2
1 1 3 3
2 1 3 1
1 2 4 1
1 1 10 4


This is what I want:



 id st t uniq_row_number
------------------
1 1 1 1
1 1 2 2
1 1 3 3
2 1 3 1
1 2 4 1
1 1 10 1


No matter if new string already was before, it's read as new partition after every change of partition.
If partition repeats, so uniq_row_number gets +1. If new partition comes with new string: boom, it gets uniq_row_number 1.



My SQL query:



 SELECT id, st, t,
row_number() OVER (PARTITION BY id, st ORDER BY id, st) cat_num,
min(t) over (PARTITION BY id, st) min_t,
max(t) over (PARTITION BY id, st) max_t
FROM tabl ORDER BY t;


SQL code is here: http://sqlfiddle.com/#!18/d4290/2










share|improve this question














"Partition by" in OVER clause groups all of the values as unique, just like "Distinct" or "Group by" do.



This is how it works in my query with row_number():



 id st t row_number
-------------------
1 1 1 1
1 1 2 2
1 1 3 3
2 1 3 1
1 2 4 1
1 1 10 4


This is what I want:



 id st t uniq_row_number
------------------
1 1 1 1
1 1 2 2
1 1 3 3
2 1 3 1
1 2 4 1
1 1 10 1


No matter if new string already was before, it's read as new partition after every change of partition.
If partition repeats, so uniq_row_number gets +1. If new partition comes with new string: boom, it gets uniq_row_number 1.



My SQL query:



 SELECT id, st, t,
row_number() OVER (PARTITION BY id, st ORDER BY id, st) cat_num,
min(t) over (PARTITION BY id, st) min_t,
max(t) over (PARTITION BY id, st) max_t
FROM tabl ORDER BY t;


SQL code is here: http://sqlfiddle.com/#!18/d4290/2







mysql sql window-functions






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 24 at 16:27









Andrey YashinAndrey Yashin

32




32












  • "if new string already was before" - To say that one row was before the other, you need a column (or a set of columns) that determines an order. So what are these columns? Why is (1, 2, 4) before (1, 1, 10)?

    – Paul Spiegel
    Mar 24 at 17:05











  • @paul-spiegel, in this example I coded row_number() OVER (PARTITION BY id, st) row_number, two columns. So in last row I got '4' near '1 1 10', because '1 1' was already in first, second and third rows. I want not '4' but '1' near ' 1 1 10', because between third and sixth lines there is another partition in.

    – Andrey Yashin
    Mar 24 at 18:49

















  • "if new string already was before" - To say that one row was before the other, you need a column (or a set of columns) that determines an order. So what are these columns? Why is (1, 2, 4) before (1, 1, 10)?

    – Paul Spiegel
    Mar 24 at 17:05











  • @paul-spiegel, in this example I coded row_number() OVER (PARTITION BY id, st) row_number, two columns. So in last row I got '4' near '1 1 10', because '1 1' was already in first, second and third rows. I want not '4' but '1' near ' 1 1 10', because between third and sixth lines there is another partition in.

    – Andrey Yashin
    Mar 24 at 18:49
















"if new string already was before" - To say that one row was before the other, you need a column (or a set of columns) that determines an order. So what are these columns? Why is (1, 2, 4) before (1, 1, 10)?

– Paul Spiegel
Mar 24 at 17:05





"if new string already was before" - To say that one row was before the other, you need a column (or a set of columns) that determines an order. So what are these columns? Why is (1, 2, 4) before (1, 1, 10)?

– Paul Spiegel
Mar 24 at 17:05













@paul-spiegel, in this example I coded row_number() OVER (PARTITION BY id, st) row_number, two columns. So in last row I got '4' near '1 1 10', because '1 1' was already in first, second and third rows. I want not '4' but '1' near ' 1 1 10', because between third and sixth lines there is another partition in.

– Andrey Yashin
Mar 24 at 18:49





@paul-spiegel, in this example I coded row_number() OVER (PARTITION BY id, st) row_number, two columns. So in last row I got '4' near '1 1 10', because '1 1' was already in first, second and third rows. I want not '4' but '1' near ' 1 1 10', because between third and sixth lines there is another partition in.

– Andrey Yashin
Mar 24 at 18:49












1 Answer
1






active

oldest

votes


















1














This is called a "gaps-and-islands" problem. You need to define a group for each "island" of similar values. Then you can use row_number().



The difference of row numbers is a convenient way to define the islands:



select t.*,
row_number() over (partition by id, seqnum_t - seqnum_it
order by t
) as uniq_row_number
from (select t.*,
row_number() over (order by t) as seqnum_t,
row_number() over (partition by id order by t) as seqnum_it,
from t
) t;


The best way to understand how this works is to look at the results of the subquery. You should be able to see how the difference of row numbers defines the groups that you care about.






share|improve this answer























  • thank you! This worked foe me!

    – Andrey Yashin
    Mar 24 at 18:42











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55325958%2fhow-to-get-repeatable-partition-as-new-one-after-another-partition%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









1














This is called a "gaps-and-islands" problem. You need to define a group for each "island" of similar values. Then you can use row_number().



The difference of row numbers is a convenient way to define the islands:



select t.*,
row_number() over (partition by id, seqnum_t - seqnum_it
order by t
) as uniq_row_number
from (select t.*,
row_number() over (order by t) as seqnum_t,
row_number() over (partition by id order by t) as seqnum_it,
from t
) t;


The best way to understand how this works is to look at the results of the subquery. You should be able to see how the difference of row numbers defines the groups that you care about.






share|improve this answer























  • thank you! This worked foe me!

    – Andrey Yashin
    Mar 24 at 18:42















1














This is called a "gaps-and-islands" problem. You need to define a group for each "island" of similar values. Then you can use row_number().



The difference of row numbers is a convenient way to define the islands:



select t.*,
row_number() over (partition by id, seqnum_t - seqnum_it
order by t
) as uniq_row_number
from (select t.*,
row_number() over (order by t) as seqnum_t,
row_number() over (partition by id order by t) as seqnum_it,
from t
) t;


The best way to understand how this works is to look at the results of the subquery. You should be able to see how the difference of row numbers defines the groups that you care about.






share|improve this answer























  • thank you! This worked foe me!

    – Andrey Yashin
    Mar 24 at 18:42













1












1








1







This is called a "gaps-and-islands" problem. You need to define a group for each "island" of similar values. Then you can use row_number().



The difference of row numbers is a convenient way to define the islands:



select t.*,
row_number() over (partition by id, seqnum_t - seqnum_it
order by t
) as uniq_row_number
from (select t.*,
row_number() over (order by t) as seqnum_t,
row_number() over (partition by id order by t) as seqnum_it,
from t
) t;


The best way to understand how this works is to look at the results of the subquery. You should be able to see how the difference of row numbers defines the groups that you care about.






share|improve this answer













This is called a "gaps-and-islands" problem. You need to define a group for each "island" of similar values. Then you can use row_number().



The difference of row numbers is a convenient way to define the islands:



select t.*,
row_number() over (partition by id, seqnum_t - seqnum_it
order by t
) as uniq_row_number
from (select t.*,
row_number() over (order by t) as seqnum_t,
row_number() over (partition by id order by t) as seqnum_it,
from t
) t;


The best way to understand how this works is to look at the results of the subquery. You should be able to see how the difference of row numbers defines the groups that you care about.







share|improve this answer












share|improve this answer



share|improve this answer










answered Mar 24 at 16:39









Gordon LinoffGordon Linoff

817k37330437




817k37330437












  • thank you! This worked foe me!

    – Andrey Yashin
    Mar 24 at 18:42

















  • thank you! This worked foe me!

    – Andrey Yashin
    Mar 24 at 18:42
















thank you! This worked foe me!

– Andrey Yashin
Mar 24 at 18:42





thank you! This worked foe me!

– Andrey Yashin
Mar 24 at 18:42



















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55325958%2fhow-to-get-repeatable-partition-as-new-one-after-another-partition%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

은진 송씨 목차 역사 본관 분파 인물 조선 왕실과의 인척 관계 집성촌 항렬자 인구 같이 보기 각주 둘러보기 메뉴은진 송씨세종실록 149권, 지리지 충청도 공주목 은진현