Does HAVING operate on a per-row or per-group basis?
up vote
0
down vote
favorite
Does the HAVING clause within SQL operate on a per-row or per-group basis?
That is, does it remove individual rows that don't meet the constraint specified?
Or does it only ever remove entire groups that don't meet the constraint specified?
mysql sql database
add a comment |
up vote
0
down vote
favorite
Does the HAVING clause within SQL operate on a per-row or per-group basis?
That is, does it remove individual rows that don't meet the constraint specified?
Or does it only ever remove entire groups that don't meet the constraint specified?
mysql sql database
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Does the HAVING clause within SQL operate on a per-row or per-group basis?
That is, does it remove individual rows that don't meet the constraint specified?
Or does it only ever remove entire groups that don't meet the constraint specified?
mysql sql database
Does the HAVING clause within SQL operate on a per-row or per-group basis?
That is, does it remove individual rows that don't meet the constraint specified?
Or does it only ever remove entire groups that don't meet the constraint specified?
mysql sql database
mysql sql database
asked Nov 22 at 13:45
J.Doe
32
32
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
HAVING
filters the results after the GROUP BY
. Hence, it filters one row per group.
The HAVING
can have aggregation expressions that are not in the SELECT
. These are implicitly included in the aggregation, although they are not in the result set.
MySQL extends the HAVING
clause. When there is no aggregation, then it behaves like a WHERE
, except it allows column aliases.
MySQL also extends the GROUP BY
to include unaggregated columns. You can think of these as being an aggregation function ANY()
that returns a value for that expression from any row in the group.
That's horrendous...
– MatBailie
Nov 22 at 13:48
@SalmanA - One implicit group per row maybe... db-fiddle.com/f/eF4nGrUxGNLJUGfNt16Fhc/0
– MatBailie
Nov 22 at 14:09
"HAVING filters the results after the GROUP BY. Hence, it filters one row per group." Does this mean that each of the groups produced by "GROUP BY" exist as a single aggregated row, rather than a set of individual, related rows?
– J.Doe
Nov 22 at 14:19
For example, we use a GROUP BY clause that creates three groups. Does this mean we have three sets of individual, related rows, or just three rows, where each row is an aggrated representation of the rows that are in that "group"?
– J.Doe
Nov 22 at 14:25
@J.Doe . . . Yes. The aggregation operator takes a group of rows (which could be a single row) and produces one row. This is the row that is handled by thehaving
.
– Gordon Linoff
Nov 22 at 14:30
|
show 1 more 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',
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%2f53432371%2fdoes-having-operate-on-a-per-row-or-per-group-basis%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
up vote
2
down vote
accepted
HAVING
filters the results after the GROUP BY
. Hence, it filters one row per group.
The HAVING
can have aggregation expressions that are not in the SELECT
. These are implicitly included in the aggregation, although they are not in the result set.
MySQL extends the HAVING
clause. When there is no aggregation, then it behaves like a WHERE
, except it allows column aliases.
MySQL also extends the GROUP BY
to include unaggregated columns. You can think of these as being an aggregation function ANY()
that returns a value for that expression from any row in the group.
That's horrendous...
– MatBailie
Nov 22 at 13:48
@SalmanA - One implicit group per row maybe... db-fiddle.com/f/eF4nGrUxGNLJUGfNt16Fhc/0
– MatBailie
Nov 22 at 14:09
"HAVING filters the results after the GROUP BY. Hence, it filters one row per group." Does this mean that each of the groups produced by "GROUP BY" exist as a single aggregated row, rather than a set of individual, related rows?
– J.Doe
Nov 22 at 14:19
For example, we use a GROUP BY clause that creates three groups. Does this mean we have three sets of individual, related rows, or just three rows, where each row is an aggrated representation of the rows that are in that "group"?
– J.Doe
Nov 22 at 14:25
@J.Doe . . . Yes. The aggregation operator takes a group of rows (which could be a single row) and produces one row. This is the row that is handled by thehaving
.
– Gordon Linoff
Nov 22 at 14:30
|
show 1 more comment
up vote
2
down vote
accepted
HAVING
filters the results after the GROUP BY
. Hence, it filters one row per group.
The HAVING
can have aggregation expressions that are not in the SELECT
. These are implicitly included in the aggregation, although they are not in the result set.
MySQL extends the HAVING
clause. When there is no aggregation, then it behaves like a WHERE
, except it allows column aliases.
MySQL also extends the GROUP BY
to include unaggregated columns. You can think of these as being an aggregation function ANY()
that returns a value for that expression from any row in the group.
That's horrendous...
– MatBailie
Nov 22 at 13:48
@SalmanA - One implicit group per row maybe... db-fiddle.com/f/eF4nGrUxGNLJUGfNt16Fhc/0
– MatBailie
Nov 22 at 14:09
"HAVING filters the results after the GROUP BY. Hence, it filters one row per group." Does this mean that each of the groups produced by "GROUP BY" exist as a single aggregated row, rather than a set of individual, related rows?
– J.Doe
Nov 22 at 14:19
For example, we use a GROUP BY clause that creates three groups. Does this mean we have three sets of individual, related rows, or just three rows, where each row is an aggrated representation of the rows that are in that "group"?
– J.Doe
Nov 22 at 14:25
@J.Doe . . . Yes. The aggregation operator takes a group of rows (which could be a single row) and produces one row. This is the row that is handled by thehaving
.
– Gordon Linoff
Nov 22 at 14:30
|
show 1 more comment
up vote
2
down vote
accepted
up vote
2
down vote
accepted
HAVING
filters the results after the GROUP BY
. Hence, it filters one row per group.
The HAVING
can have aggregation expressions that are not in the SELECT
. These are implicitly included in the aggregation, although they are not in the result set.
MySQL extends the HAVING
clause. When there is no aggregation, then it behaves like a WHERE
, except it allows column aliases.
MySQL also extends the GROUP BY
to include unaggregated columns. You can think of these as being an aggregation function ANY()
that returns a value for that expression from any row in the group.
HAVING
filters the results after the GROUP BY
. Hence, it filters one row per group.
The HAVING
can have aggregation expressions that are not in the SELECT
. These are implicitly included in the aggregation, although they are not in the result set.
MySQL extends the HAVING
clause. When there is no aggregation, then it behaves like a WHERE
, except it allows column aliases.
MySQL also extends the GROUP BY
to include unaggregated columns. You can think of these as being an aggregation function ANY()
that returns a value for that expression from any row in the group.
edited Nov 22 at 14:32
answered Nov 22 at 13:46
Gordon Linoff
753k35287395
753k35287395
That's horrendous...
– MatBailie
Nov 22 at 13:48
@SalmanA - One implicit group per row maybe... db-fiddle.com/f/eF4nGrUxGNLJUGfNt16Fhc/0
– MatBailie
Nov 22 at 14:09
"HAVING filters the results after the GROUP BY. Hence, it filters one row per group." Does this mean that each of the groups produced by "GROUP BY" exist as a single aggregated row, rather than a set of individual, related rows?
– J.Doe
Nov 22 at 14:19
For example, we use a GROUP BY clause that creates three groups. Does this mean we have three sets of individual, related rows, or just three rows, where each row is an aggrated representation of the rows that are in that "group"?
– J.Doe
Nov 22 at 14:25
@J.Doe . . . Yes. The aggregation operator takes a group of rows (which could be a single row) and produces one row. This is the row that is handled by thehaving
.
– Gordon Linoff
Nov 22 at 14:30
|
show 1 more comment
That's horrendous...
– MatBailie
Nov 22 at 13:48
@SalmanA - One implicit group per row maybe... db-fiddle.com/f/eF4nGrUxGNLJUGfNt16Fhc/0
– MatBailie
Nov 22 at 14:09
"HAVING filters the results after the GROUP BY. Hence, it filters one row per group." Does this mean that each of the groups produced by "GROUP BY" exist as a single aggregated row, rather than a set of individual, related rows?
– J.Doe
Nov 22 at 14:19
For example, we use a GROUP BY clause that creates three groups. Does this mean we have three sets of individual, related rows, or just three rows, where each row is an aggrated representation of the rows that are in that "group"?
– J.Doe
Nov 22 at 14:25
@J.Doe . . . Yes. The aggregation operator takes a group of rows (which could be a single row) and produces one row. This is the row that is handled by thehaving
.
– Gordon Linoff
Nov 22 at 14:30
That's horrendous...
– MatBailie
Nov 22 at 13:48
That's horrendous...
– MatBailie
Nov 22 at 13:48
@SalmanA - One implicit group per row maybe... db-fiddle.com/f/eF4nGrUxGNLJUGfNt16Fhc/0
– MatBailie
Nov 22 at 14:09
@SalmanA - One implicit group per row maybe... db-fiddle.com/f/eF4nGrUxGNLJUGfNt16Fhc/0
– MatBailie
Nov 22 at 14:09
"HAVING filters the results after the GROUP BY. Hence, it filters one row per group." Does this mean that each of the groups produced by "GROUP BY" exist as a single aggregated row, rather than a set of individual, related rows?
– J.Doe
Nov 22 at 14:19
"HAVING filters the results after the GROUP BY. Hence, it filters one row per group." Does this mean that each of the groups produced by "GROUP BY" exist as a single aggregated row, rather than a set of individual, related rows?
– J.Doe
Nov 22 at 14:19
For example, we use a GROUP BY clause that creates three groups. Does this mean we have three sets of individual, related rows, or just three rows, where each row is an aggrated representation of the rows that are in that "group"?
– J.Doe
Nov 22 at 14:25
For example, we use a GROUP BY clause that creates three groups. Does this mean we have three sets of individual, related rows, or just three rows, where each row is an aggrated representation of the rows that are in that "group"?
– J.Doe
Nov 22 at 14:25
@J.Doe . . . Yes. The aggregation operator takes a group of rows (which could be a single row) and produces one row. This is the row that is handled by the
having
.– Gordon Linoff
Nov 22 at 14:30
@J.Doe . . . Yes. The aggregation operator takes a group of rows (which could be a single row) and produces one row. This is the row that is handled by the
having
.– Gordon Linoff
Nov 22 at 14:30
|
show 1 more 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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53432371%2fdoes-having-operate-on-a-per-row-or-per-group-basis%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