sql >> データベース >  >> RDS >> Mysql

MySQLの合計、group byでカウントし、参加します

    あなたの最初の試みは本当に近いものでした。ただし、各post_id insightsの一致数を掛けていました 、したがって、DISTINCTを使用する必要があります :

    select type_name, count(distinct p.post_id), sum(likes), sum(comments)
    from types t
    left join posts p on t.type_id = p.post_type
    left join insights i on p.post_id = i.post_id
    group by type_name;
    

    または、同じ投稿のすべての洞察を組み合わせたサブクエリでグループ化することもできます。

    select type_name, count(*), sum(likes), sum(comments)
    from types t
    left join posts p on t.type_id = p.post_type
    left join (select post_id, sum(likes) likes, sum(comments) comments
               from insights
               group by post_id) i on p.post_id = i.post_id
    group by type_name;
    

    FIDDLE



    1. Pythonでオブジェクトのリストの重複を削除する

    2. SQL複数のテーブル間の多対多の関係

    3. インデックスがいくつかあるのに、大きなテーブルでのMySQL InnoDBの挿入/更新が非常に遅くなるのはなぜですか?

    4. SQL Server履歴テーブル-SPまたはトリガーを介してデータを入力しますか?