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

2行を合計し、日付/合計で並べ替えます

    このために、結合ではなく選択でデータをフィルタリングする必要があります。

    この状態を取り除きます:

    AND (month(d.date), year(d.date)) = (month(CURDATE()), year(CURDATE()))
    

    これを選択に追加します:

    SUM (CASE WHEN (month(d.date), year(d.date)) = (month(CURDATE()), year(CURDATE())) THEN 1 ELSE 0 END) as monthly
    

    編集:

    クエリ全体:

    SELECT users.id, users.username, 
      COALESCE(sum(CASE WHEN (month(donations.date), year(donations.date)) = (month(CURDATE()), year(CURDATE())) THEN donations.amount ELSE 0 END), 0) monthly_sum, 
      COALESCE(sum(CASE WHEN (month(donations.date), year(donations.date)) = (month(CURDATE()), year(CURDATE())) THEN 1 ELSE 0 END), 0) monthly_amount, 
    
      COALESCE(sum(donations.amount), 0) total_sum, 
      count(*) total_amount
    
    from users
    left join donations
      on donations.uid = users.id
    group by users.id, users.username
    

    http://sqlfiddle.com/#!2/20a974/20/0



    1. 条件付きのlaravel隠しフィールド

    2. ランキング位置を保存するためのMySQL更新ステートメント

    3. PHPを使用してMySQLテーブルの特定のテキストに応じて特定の画像を表示する

    4. 1:nテーブルからの単一のクエリで最新のメモを(タイムスタンプで)取得する