Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa menggunakan alias pada klausa GROUP BY?

Tidak yakin apa yang Anda coba lakukan. Tetapi Anda dapat membungkus kueri Anda menjadi subkueri tanpa range_day dalam klausa GROUP BY. Kemudian gunakan klausa GROUP BY Anda di kueri luar apa adanya.

SELECT  SUM(score) score,
    type,
    context, -- WARNING! Not listed in group by clause
    post_id,
    table_code,
    comment_id,
    MIN(seen) seen,
    MAX(d_t) d_t,
    range_day
FROM (
    SELECT  SUM(score) score,
        MAX(id) as id,
        type,
        context, -- WARNING! Not listed in group by clause
        post_id,
        e.table_code,
        comment_id,
        MIN(seen) seen,
        MAX(date_time) d_t,
        (CASE   WHEN FROM_UNIXTIME(MAX(date_time)) >= CURDATE() THEN 'today'
            WHEN FROM_UNIXTIME(MAX(date_time)) >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN 'yesterday'
            WHEN FROM_UNIXTIME(MAX(date_time)) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN 'in last week'
            ELSE 'in last month'
        END) as range_day
    FROM `events` e
    WHERE e.id IN ($ids)
    GROUP BY type, post_id, e.table_code, comment_id
) sub
GROUP BY type, post_id, table_code, comment_id, range_day
ORDER BY seen, MAX(d_t) desc, MAX(id) desc

Namun - Anda memilih context tanpa agregasi yang tidak tercantum dalam klausa GROUP BY. Dengan demikian Anda akan mendapatkan beberapa nilai "acak" dari grup. Dalam mode ketat, kueri akan gagal.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara `brew services start mysql` dan `mysql.server start`

  2. Bagaimana saya bisa menyimpan output kueri ke dalam tabel sementara dan menggunakan tabel dalam kueri baru?

  3. Emacs dan MySQL di Mac

  4. Kesalahan saat menggunakan pymysql di labu

  5. Peringkat berdasarkan dua kolom