私はMySQLで以下を達成しようとしています(pseudo
コードを参照)
SELECT DISTINCT gid
FROM `Gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC
WHERE句で(SELECT ...)を使用せずにこれを行う方法はありますか?.
これを試して;
select gid
from `Gd`
group by gid
having count(*) > 10
order by lastupdated desc
あなたが何をしようとしているのかわからない...多分何か
SELECT gid, COUNT(*) AS num FROM Gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
SELECT COUNT(*)
FROM `Gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
編集(GIDのみが必要な場合):
SELECT MIN(gid)
FROM `Gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
試してみる
SELECT DISTINCT gid
FROM `Gd`
group by gid
having count(*) > 10
ORDER BY max(lastupdated) DESC
条項のないアカデミック版:
select *
from (
select gid, count(*) as tmpcount from Gd group by gid
) as tmp
where tmpcount > 10;
WHERE句に集計関数(例:COUNT、MAXなど)を含めることはできません。したがって、代わりにHAVING句を使用します。したがって、クエリ全体は次のようになります。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
-30分ごとの記録が欠落している気象観測所を検索する
SELECT stationid
FROM weather_data
WHERE `Timestamp` LIKE '2011-11-15 %' AND
stationid IN (SELECT `ID` FROM `weather_stations`)
GROUP BY stationid
HAVING COUNT(*) != 48;
-ヤピスカンのバリエーションとwhere .. in .. select
where
でcount()
を追加できないと思います。今なぜ...を参照してください.
where
はhaving
と同じではありません。having
は、作業中またはグループを処理しており、同じcountの作業を意味します。また、グループ全体を処理しています。
今、それがグループ全体としてどのように働いているかを数えてください
テーブルを作成し、IDを入力してから使用します:
select count(*) from table_name
合計値は、グループを示していることを意味します! where
はcount()
で追加されます。