以下のSQLにwhere句を追加して、「howmany」という列に1より大きい結果のみが表示されるようにしたいのですが、試行するとエラーが発生し続けます。
select monthname(birthdate) as 'Month', Count(*) as howmany
from tblBday
group by month(birthdate)
;
これは、WHERE句でエイリアスを使用できないためです。
また、WHERE句で集計関数を実行することはできません
あなたはこのようなものが必要です
SELECT monthname(birthdate) as Month, Count(*) AS howmany
FROM tblBday
GROUP BY month(birthdate)
HAVING Count(*) > 1
;
これがHAVINGについてのチュートリアルです
select monthname(birthdate) as 'Month', Count(*) as howmany
^-- ^--
そのようなエイリアスを引用することはできません。一重引用符('
)は物事を文字列に変換します-文字列はエイリアスではなく、エイリアスにすることはできません。引用符を削除するか、バッククォートを使用します。
select monthname(birthdate) as Month, Count(*) as howmany
句でエイリアスを使用することはできません。集計関数を使用するため、句WHERE
が必要です。HAVING
select monthname(birthdate) as `Month`, Count(*) as howmany
from tblBday
group by month(birthdate)
having Count(*) > 1
句でエイリアスを使用する場合はWHERE
、クエリをサブクエリにすることができます。
select `month`, howmany
from
(
select monthname(birthdate) as `Month`, Count(*) as howmany
from tblBday
group by month(birthdate)
) src
where howmany > 1
試す
select monthname(birthdate) as 'Month', Count(*) as howmany
from tblBday
group by month(birthdate)
having howmany > 1
;
select monthname(birthdate) as 'Month', Count(*) as howmany
from tblBday
group by monthname(birthdate)
Having count(*) > 1
;