join and group table a rows by table b dates
I have two m:m
tables, profile_wordcards
and profile_activities
. I want to group all wordcards by activity creation dates, where profile_id = 2
.
I.e., if an activity 1
was created on 2019-01-19 2:12:05
, any wordcard created on or before that date should be grouped by activity 1
. If an activity 2
was created on 2019-01-19 2:14:22
, all wordcards created on or before that date should be grouped by activity 2
, and so on.
Table: profile_activities
activity_id | profile_id | created_at
------------------------------------------
1 2 2019-01-19 2:12:05
2 2 2019-01-19 2:14:22
Table: profile_wordcards
wordcard_id | profile_id | created_at
-----------------------------------------
386 2 2019-01-19 2:04:07 >> Everything below: less than activity 1 created at
385 2 2019-01-19 2:05:19
263 2 2019-01-19 2:05:19
234 2 2019-01-19 2:11:49
175 2 2019-01-19 2:12:02
201 2 2019-01-19 2:12:02
226 2 2019-01-19 2:12:04
409 2 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05
359 2 2019-01-19 2:12:25 >> Everything below: less than activity 2 created at
188 2 2019-01-19 2:12:34
227 2 2019-01-19 2:12:59
187 2 2019-01-19 2:13:01
228 2 2019-01-19 2:13:18
384 2 2019-01-19 2:13:37
177 2 2019-01-19 2:14:00
225 2 2019-01-19 2:14:00
Desired Output:
wordcard_id | profile_id | created_at | activity_id | activity_created_at
---------------------------------------------------------------------------------------
-- GROUP 1 (ACTIVITY ID 1, any wordcard.created_at <= 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
386 2 2019-01-19 2:04:07 1 2019-01-19 2:12:05
385 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
263 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
234 2 2019-01-19 2:11:49 1 2019-01-19 2:12:05
175 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
201 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
226 2 2019-01-19 2:12:04 1 2019-01-19 2:12:05
409 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
-- GROUP 2 (ACTIVITY ID 2, any wordcard.created_at <= 2019-01-19 2:14:22 but > 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
359 2 2019-01-19 2:12:25 2 2019-01-19 2:14:22
188 2 2019-01-19 2:12:34 2 2019-01-19 2:14:22
227 2 2019-01-19 2:12:59 2 2019-01-19 2:14:22
187 2 2019-01-19 2:13:01 2 2019-01-19 2:14:22
228 2 2019-01-19 2:13:18 2 2019-01-19 2:14:22
384 2 2019-01-19 2:13:37 2 2019-01-19 2:14:22
177 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
225 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
I've tried:
select pwc.wordcard_id, pwc.created_at, pa.activity_id, pa.created_at, pwc.profile_id
from profile_wordcards pwc
left join profile_activities pa on (pa.created_at < pwc.created_at)
where pwc.profile_id = 2
order by activity_id asc
But this is returning a) activity IDs not attached to profile 2 and b) not grouping as expected.
sql postgresql date group-by
add a comment |
I have two m:m
tables, profile_wordcards
and profile_activities
. I want to group all wordcards by activity creation dates, where profile_id = 2
.
I.e., if an activity 1
was created on 2019-01-19 2:12:05
, any wordcard created on or before that date should be grouped by activity 1
. If an activity 2
was created on 2019-01-19 2:14:22
, all wordcards created on or before that date should be grouped by activity 2
, and so on.
Table: profile_activities
activity_id | profile_id | created_at
------------------------------------------
1 2 2019-01-19 2:12:05
2 2 2019-01-19 2:14:22
Table: profile_wordcards
wordcard_id | profile_id | created_at
-----------------------------------------
386 2 2019-01-19 2:04:07 >> Everything below: less than activity 1 created at
385 2 2019-01-19 2:05:19
263 2 2019-01-19 2:05:19
234 2 2019-01-19 2:11:49
175 2 2019-01-19 2:12:02
201 2 2019-01-19 2:12:02
226 2 2019-01-19 2:12:04
409 2 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05
359 2 2019-01-19 2:12:25 >> Everything below: less than activity 2 created at
188 2 2019-01-19 2:12:34
227 2 2019-01-19 2:12:59
187 2 2019-01-19 2:13:01
228 2 2019-01-19 2:13:18
384 2 2019-01-19 2:13:37
177 2 2019-01-19 2:14:00
225 2 2019-01-19 2:14:00
Desired Output:
wordcard_id | profile_id | created_at | activity_id | activity_created_at
---------------------------------------------------------------------------------------
-- GROUP 1 (ACTIVITY ID 1, any wordcard.created_at <= 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
386 2 2019-01-19 2:04:07 1 2019-01-19 2:12:05
385 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
263 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
234 2 2019-01-19 2:11:49 1 2019-01-19 2:12:05
175 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
201 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
226 2 2019-01-19 2:12:04 1 2019-01-19 2:12:05
409 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
-- GROUP 2 (ACTIVITY ID 2, any wordcard.created_at <= 2019-01-19 2:14:22 but > 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
359 2 2019-01-19 2:12:25 2 2019-01-19 2:14:22
188 2 2019-01-19 2:12:34 2 2019-01-19 2:14:22
227 2 2019-01-19 2:12:59 2 2019-01-19 2:14:22
187 2 2019-01-19 2:13:01 2 2019-01-19 2:14:22
228 2 2019-01-19 2:13:18 2 2019-01-19 2:14:22
384 2 2019-01-19 2:13:37 2 2019-01-19 2:14:22
177 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
225 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
I've tried:
select pwc.wordcard_id, pwc.created_at, pa.activity_id, pa.created_at, pwc.profile_id
from profile_wordcards pwc
left join profile_activities pa on (pa.created_at < pwc.created_at)
where pwc.profile_id = 2
order by activity_id asc
But this is returning a) activity IDs not attached to profile 2 and b) not grouping as expected.
sql postgresql date group-by
add a comment |
I have two m:m
tables, profile_wordcards
and profile_activities
. I want to group all wordcards by activity creation dates, where profile_id = 2
.
I.e., if an activity 1
was created on 2019-01-19 2:12:05
, any wordcard created on or before that date should be grouped by activity 1
. If an activity 2
was created on 2019-01-19 2:14:22
, all wordcards created on or before that date should be grouped by activity 2
, and so on.
Table: profile_activities
activity_id | profile_id | created_at
------------------------------------------
1 2 2019-01-19 2:12:05
2 2 2019-01-19 2:14:22
Table: profile_wordcards
wordcard_id | profile_id | created_at
-----------------------------------------
386 2 2019-01-19 2:04:07 >> Everything below: less than activity 1 created at
385 2 2019-01-19 2:05:19
263 2 2019-01-19 2:05:19
234 2 2019-01-19 2:11:49
175 2 2019-01-19 2:12:02
201 2 2019-01-19 2:12:02
226 2 2019-01-19 2:12:04
409 2 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05
359 2 2019-01-19 2:12:25 >> Everything below: less than activity 2 created at
188 2 2019-01-19 2:12:34
227 2 2019-01-19 2:12:59
187 2 2019-01-19 2:13:01
228 2 2019-01-19 2:13:18
384 2 2019-01-19 2:13:37
177 2 2019-01-19 2:14:00
225 2 2019-01-19 2:14:00
Desired Output:
wordcard_id | profile_id | created_at | activity_id | activity_created_at
---------------------------------------------------------------------------------------
-- GROUP 1 (ACTIVITY ID 1, any wordcard.created_at <= 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
386 2 2019-01-19 2:04:07 1 2019-01-19 2:12:05
385 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
263 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
234 2 2019-01-19 2:11:49 1 2019-01-19 2:12:05
175 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
201 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
226 2 2019-01-19 2:12:04 1 2019-01-19 2:12:05
409 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
-- GROUP 2 (ACTIVITY ID 2, any wordcard.created_at <= 2019-01-19 2:14:22 but > 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
359 2 2019-01-19 2:12:25 2 2019-01-19 2:14:22
188 2 2019-01-19 2:12:34 2 2019-01-19 2:14:22
227 2 2019-01-19 2:12:59 2 2019-01-19 2:14:22
187 2 2019-01-19 2:13:01 2 2019-01-19 2:14:22
228 2 2019-01-19 2:13:18 2 2019-01-19 2:14:22
384 2 2019-01-19 2:13:37 2 2019-01-19 2:14:22
177 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
225 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
I've tried:
select pwc.wordcard_id, pwc.created_at, pa.activity_id, pa.created_at, pwc.profile_id
from profile_wordcards pwc
left join profile_activities pa on (pa.created_at < pwc.created_at)
where pwc.profile_id = 2
order by activity_id asc
But this is returning a) activity IDs not attached to profile 2 and b) not grouping as expected.
sql postgresql date group-by
I have two m:m
tables, profile_wordcards
and profile_activities
. I want to group all wordcards by activity creation dates, where profile_id = 2
.
I.e., if an activity 1
was created on 2019-01-19 2:12:05
, any wordcard created on or before that date should be grouped by activity 1
. If an activity 2
was created on 2019-01-19 2:14:22
, all wordcards created on or before that date should be grouped by activity 2
, and so on.
Table: profile_activities
activity_id | profile_id | created_at
------------------------------------------
1 2 2019-01-19 2:12:05
2 2 2019-01-19 2:14:22
Table: profile_wordcards
wordcard_id | profile_id | created_at
-----------------------------------------
386 2 2019-01-19 2:04:07 >> Everything below: less than activity 1 created at
385 2 2019-01-19 2:05:19
263 2 2019-01-19 2:05:19
234 2 2019-01-19 2:11:49
175 2 2019-01-19 2:12:02
201 2 2019-01-19 2:12:02
226 2 2019-01-19 2:12:04
409 2 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05
359 2 2019-01-19 2:12:25 >> Everything below: less than activity 2 created at
188 2 2019-01-19 2:12:34
227 2 2019-01-19 2:12:59
187 2 2019-01-19 2:13:01
228 2 2019-01-19 2:13:18
384 2 2019-01-19 2:13:37
177 2 2019-01-19 2:14:00
225 2 2019-01-19 2:14:00
Desired Output:
wordcard_id | profile_id | created_at | activity_id | activity_created_at
---------------------------------------------------------------------------------------
-- GROUP 1 (ACTIVITY ID 1, any wordcard.created_at <= 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
386 2 2019-01-19 2:04:07 1 2019-01-19 2:12:05
385 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
263 2 2019-01-19 2:05:19 1 2019-01-19 2:12:05
234 2 2019-01-19 2:11:49 1 2019-01-19 2:12:05
175 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
201 2 2019-01-19 2:12:02 1 2019-01-19 2:12:05
226 2 2019-01-19 2:12:04 1 2019-01-19 2:12:05
409 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
361 2 2019-01-19 2:12:05 1 2019-01-19 2:12:05
-- GROUP 2 (ACTIVITY ID 2, any wordcard.created_at <= 2019-01-19 2:14:22 but > 2019-01-19 2:12:05)
-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
359 2 2019-01-19 2:12:25 2 2019-01-19 2:14:22
188 2 2019-01-19 2:12:34 2 2019-01-19 2:14:22
227 2 2019-01-19 2:12:59 2 2019-01-19 2:14:22
187 2 2019-01-19 2:13:01 2 2019-01-19 2:14:22
228 2 2019-01-19 2:13:18 2 2019-01-19 2:14:22
384 2 2019-01-19 2:13:37 2 2019-01-19 2:14:22
177 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
225 2 2019-01-19 2:14:00 2 2019-01-19 2:14:22
I've tried:
select pwc.wordcard_id, pwc.created_at, pa.activity_id, pa.created_at, pwc.profile_id
from profile_wordcards pwc
left join profile_activities pa on (pa.created_at < pwc.created_at)
where pwc.profile_id = 2
order by activity_id asc
But this is returning a) activity IDs not attached to profile 2 and b) not grouping as expected.
sql postgresql date group-by
sql postgresql date group-by
edited Jan 20 at 6:39
sticky bit
15k91632
15k91632
asked Jan 19 at 3:24
GrowlerGrowler
4,7931266155
4,7931266155
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Instead of joining profile_activities
directly join a subquery that selects all columns from profile_activities
and also the lag()
ed created_at
. Then you can compare against the created_at
of the "previous" activity. For the default value for lag()
, that gets taken when no previous activity exists, use '-infinity'
. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at
will work in that cases too.
SELECT w.wordcard_id,
w.profile_id,
w.created_at,
a.activity_id,
a.profile_id,
a.created_at
FROM (SELECT a.activity_id,
a.profile_id,
a.created_at,
lag(a.created_at,
1,
'-infinity') OVER (ORDER BY a.created_at) created_at_lag
FROM profile_activities a) a
INNER JOIN profile_wordcards w
ON w.profile_id = a.profile_id
AND w.created_at > a.created_at_lag
AND w.created_at <= a.created_at
ORDER BY a.activity_id;
db<>fiddle
Amazing work!LAG
is great and the use ofinfinity
to capture items below the first activitycreated_at
threshold is great
– Growler
Jan 19 at 23:28
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54263817%2fjoin-and-group-table-a-rows-by-table-b-dates%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
Instead of joining profile_activities
directly join a subquery that selects all columns from profile_activities
and also the lag()
ed created_at
. Then you can compare against the created_at
of the "previous" activity. For the default value for lag()
, that gets taken when no previous activity exists, use '-infinity'
. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at
will work in that cases too.
SELECT w.wordcard_id,
w.profile_id,
w.created_at,
a.activity_id,
a.profile_id,
a.created_at
FROM (SELECT a.activity_id,
a.profile_id,
a.created_at,
lag(a.created_at,
1,
'-infinity') OVER (ORDER BY a.created_at) created_at_lag
FROM profile_activities a) a
INNER JOIN profile_wordcards w
ON w.profile_id = a.profile_id
AND w.created_at > a.created_at_lag
AND w.created_at <= a.created_at
ORDER BY a.activity_id;
db<>fiddle
Amazing work!LAG
is great and the use ofinfinity
to capture items below the first activitycreated_at
threshold is great
– Growler
Jan 19 at 23:28
add a comment |
Instead of joining profile_activities
directly join a subquery that selects all columns from profile_activities
and also the lag()
ed created_at
. Then you can compare against the created_at
of the "previous" activity. For the default value for lag()
, that gets taken when no previous activity exists, use '-infinity'
. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at
will work in that cases too.
SELECT w.wordcard_id,
w.profile_id,
w.created_at,
a.activity_id,
a.profile_id,
a.created_at
FROM (SELECT a.activity_id,
a.profile_id,
a.created_at,
lag(a.created_at,
1,
'-infinity') OVER (ORDER BY a.created_at) created_at_lag
FROM profile_activities a) a
INNER JOIN profile_wordcards w
ON w.profile_id = a.profile_id
AND w.created_at > a.created_at_lag
AND w.created_at <= a.created_at
ORDER BY a.activity_id;
db<>fiddle
Amazing work!LAG
is great and the use ofinfinity
to capture items below the first activitycreated_at
threshold is great
– Growler
Jan 19 at 23:28
add a comment |
Instead of joining profile_activities
directly join a subquery that selects all columns from profile_activities
and also the lag()
ed created_at
. Then you can compare against the created_at
of the "previous" activity. For the default value for lag()
, that gets taken when no previous activity exists, use '-infinity'
. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at
will work in that cases too.
SELECT w.wordcard_id,
w.profile_id,
w.created_at,
a.activity_id,
a.profile_id,
a.created_at
FROM (SELECT a.activity_id,
a.profile_id,
a.created_at,
lag(a.created_at,
1,
'-infinity') OVER (ORDER BY a.created_at) created_at_lag
FROM profile_activities a) a
INNER JOIN profile_wordcards w
ON w.profile_id = a.profile_id
AND w.created_at > a.created_at_lag
AND w.created_at <= a.created_at
ORDER BY a.activity_id;
db<>fiddle
Instead of joining profile_activities
directly join a subquery that selects all columns from profile_activities
and also the lag()
ed created_at
. Then you can compare against the created_at
of the "previous" activity. For the default value for lag()
, that gets taken when no previous activity exists, use '-infinity'
. As all timestamps are larger than negative infinity, the comparison against the wordcard created_at
will work in that cases too.
SELECT w.wordcard_id,
w.profile_id,
w.created_at,
a.activity_id,
a.profile_id,
a.created_at
FROM (SELECT a.activity_id,
a.profile_id,
a.created_at,
lag(a.created_at,
1,
'-infinity') OVER (ORDER BY a.created_at) created_at_lag
FROM profile_activities a) a
INNER JOIN profile_wordcards w
ON w.profile_id = a.profile_id
AND w.created_at > a.created_at_lag
AND w.created_at <= a.created_at
ORDER BY a.activity_id;
db<>fiddle
answered Jan 19 at 4:34
sticky bitsticky bit
15k91632
15k91632
Amazing work!LAG
is great and the use ofinfinity
to capture items below the first activitycreated_at
threshold is great
– Growler
Jan 19 at 23:28
add a comment |
Amazing work!LAG
is great and the use ofinfinity
to capture items below the first activitycreated_at
threshold is great
– Growler
Jan 19 at 23:28
Amazing work!
LAG
is great and the use of infinity
to capture items below the first activity created_at
threshold is great– Growler
Jan 19 at 23:28
Amazing work!
LAG
is great and the use of infinity
to capture items below the first activity created_at
threshold is great– Growler
Jan 19 at 23:28
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54263817%2fjoin-and-group-table-a-rows-by-table-b-dates%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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