簡體   English   中英

SQL 查詢:遍歷具有相同值的行並計算出現次數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM