sql >> Databasteknik >  >> RDS >> Mysql

MYSQL:VÄLJA summan av fältvärden samtidigt som du väljer unika värden?

Om jag förstår det rätt, did_i_buy kolumn betyder "köpte Tom". Du kan göra det så här:

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

Alternativt (ett CASE). uttalande, se kommentarerna nedan)

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

Och ytterligare en justering: På grund av WHERE satsen, COUNT kommer bara att se rader där purchase_status='bought' , så uttrycket som kontrollerar status kan utelämnas (den enda ändringen från ovan är på rad 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. PARTITION BY med och utan KEEP i Oracle

  2. MySQL-fråga för att dra objekt, men alltid visa en viss överst

  3. MariaDB JSON_CONTAINS_PATH() Förklarad

  4. Homebrew MySQL 8.0.18 på macOS 10.15 Catalina kommer inte att köras som tjänst