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

左結合とgroupbyを同時に使用すると問題が発生します。同じuser_idを持つ複数行のデータがあるので、groupbyを使用したい

    カウンターサムでグループ化する必要もあります。

      create table call_log (
      user_id int(10), 
      duration int(10)      );
    
      insert into call_log values ( 5019,12),
                                  ( 2345,23),
                                  ( 5019,14);
    
      create table job_timetable  (
                  user_id int(10), 
                   counter int(10) );
    
      insert into job_timetable values ( 5019,1),
                                       ( 5019,3),
                                       ( 2345,2);
    
    
      SELECT call_log.user_id,SUM(call_log.duration) as duration,
                        avg(call_log.duration) as average_duration,
                                                        countersum
        FROM call_log 
        LEFT JOIN ( SELECT user_id,sum(counter) as countersum FROM job_timetable 
        GROUP BY user_id )  b   on call_log.user_id= b.user_id
        where call_log.user_id is not null 
        group by call_log.user_id,countersum 
        order by  call_log.user_id asc;
    

    デモ: https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/77



    1. htmlエンティティをデータベースに保存しますか?または、取得時に変換しますか?

    2. SpringでJDBCforClientDetailsS​​erviceConfigurerを使用してクライアントを追加するにはどうすればよいですか?

    3. Oracleのタイムゾーンの日付形式

    4. 合計を実行するためのOracleでのクエリ