[英]SQL Query: Iterate through rows with same values and count occurences
我有以下表結構:
Name Fruit
--------------------
Bob Apple
Bob Pear
Alice Apple
Alice Orange
Alice Orange
Bob Orange
Bob Apple
Alice Pear
Bob Orange
Bob Apple
我想遍歷 Name 列,並計算不同 Fruits 的數量。 首選輸出將是:
Name Apple Pear Orange
----------------------------------
Bob 3 1 2
Alice 1 1 2
有誰知道我如何在 MySQL 工作台中將其編寫為 SQL 查詢?
使用條件聚合:
select name,
sum(fruit = 'Apple') as num_apples,
sum(fruit = 'Pear') as num_pears,
sum(fruit = 'Orange') as num_oranges
from t
group by name;
您也可以使用 CASE 表達式
SELECT Name,
SUM(CASE WHEN fruit = 'Apple' THEN 1 ELSE 0 END) Apples,
SUM(CASE WHEN fruit = 'Pear' THEN 1 ELSE 0 END) Pear,
SUM(CASE WHEN fruit = 'Orange' THEN 1 ELSE 0 END) Orange
FROM Table1
GROUP BY Name;
請嘗試使用以下 SQL。 “水果”是表的名稱:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'SUM(IF(tf.Fruit = ''',
Fruit,
''', 1, 0)) AS ',
Fruit
)
) INTO @sql
FROM fruits;
SET @sql = CONCAT('SELECT tf.name, ',
@sql,
' FROM fruits tf
GROUP BY tf.name');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.