tweets
テーブル内の各ユーザーのすべてとretweets
(すべてのリツイートもツイートです)をカウントする必要がありますauthors
。私の最初のアイデアはかなりうまくいきます:
ツイートカウンター
SELECT a.id, a.name, count(*)
FROM authors AS a
INNER JOIN tweets AS t
ON t.fromuser_id = a.id
GROUP BY a.id, a.name
ORDER BY count(*)
リツイートカウンター
SELECT a.id, a.name, count(*)
FROM authors AS a
INNER JOIN tweets AS t
ON t.fromuser_id = a.id AND retweet = TRUE
GROUP BY a.id, a.name
ORDER BY count(*)
...しかし今、私はそれをすべてまとめたいと思います。それよりも良い(より速い)方法があるのだろうか:
マージ
SELECT a.id, a.name, count(*), (
SELECT count(*)
FROM tweets
WHERE fromuser_id = a.id AND retweet = TRUE
)
FROM authors AS a
INNER JOIN tweets AS t
ON t.fromuser_id = a.id
GROUP BY a.id, a.name
ORDER BY count(*)