コメント数> Xのユーザーの数を数えるタスクがあります。
私のSQLクエリは次のようになります。
SELECT users.id,
users.display_name,
(SELECT COUNT(*)
FROM cms_comments
WHERE cms_comments.author_id = users.id) AS comments_count
FROM users
HAVING comments_count > 150;
すべて問題ありません。すべてのユーザーが正しく表示されます。しかし、1行でこれらすべてのユーザーの数量を返すクエリが必要です。このクエリを変更して正しいデータを生成する方法がわかりません。
これはあなたが探しているものだと思います:
select count(*) from (
select u.id from users u
join cms_comments c on u.id = c.author_id
group by u.id
having count(*) > 150
) final
Group by句を使用する
SELECT users.id,
users.display_name,
(SELECT COUNT(*)
FROM cms_comments
WHERE cms_comments.author_id = users.id) AS comments_count
FROM users
GROUP BY users.id, user.display_name
HAVING comments_count > 150;
これにより、commsments_count> 150を持つusers.id、users.display_nameのそれぞれの数がわかります。
ユーザーの総数を取得するコメントについては、質問を更新するのが最善ですが、この基準に一致するすべてのユーザーの数が必要な場合は、
SELECT COUNT(*) AS TotalNumberOfUsersMatchingCritera
FROM
(
SELECT users.id,
users.display_name,
(SELECT COUNT(*)
FROM cms_comments
WHERE cms_comments.author_id = users.id) AS comments_count
FROM users
GROUP BY users.id, user.display_name
HAVING comments_count > 150;
) AS T