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

MYSQL:PILIH jumlah nilai bidang sementara juga PILIH nilai unik?

Jika saya mengerti dengan benar, did_i_buy kolom berarti "apakah Tom membeli". Anda dapat melakukannya seperti ini:

SELECT
  Items.item_id,
  item_name,
  COUNT(CASE WHEN purchase_status='bought' THEN 1 END) as number_bought,
  MAX(CASE WHEN purchase_status='bought' AND user_name='Tom' THEN 'yes' ELSE 'no' END) AS did_i_buy
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
GROUP BY Items.item_id

Alternatifnya (satu CASE pernyataan, lihat komentar di bawah)

SELECT
  Items.item_id,
  item_name,
  COUNT(purchase_status='bought') as number_bought,
  MAX(CASE WHEN user_name='Tom' THEN 'yes' ELSE 'no' END) AS did_i_buy
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
WHERE purchase_status='bought'
GROUP BY Items.item_id

Dan satu penyesuaian lagi: Karena WHERE klausa, COUNT hanya akan melihat baris di mana purchase_status='bought' , jadi ekspresi yang memeriksa status dapat diabaikan (satu-satunya perubahan dari atas adalah pada baris 4):

SELECT
  Items.item_id,
  item_name,
  COUNT(*) as number_bought,
  MAX(CASE WHEN user_name='Tom' THEN 'yes' ELSE 'no' END) AS did_i_buy
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
WHERE purchase_status='bought'
GROUP BY Items.item_id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memasukkan ke tabel mysql dan menimpa semua data saat ini

  2. Bagaimana Cara Menghasilkan nomor Acak tanpa pengulangan dalam database menggunakan PHP?

  3. Terlalu banyak koneksi menggunakan Hibernate dan mysql

  4. Apa yang harus diketahui setiap programmer PHP?

  5. SYSDATE() Contoh – MySQL