Mysql

如何計算組內的不同列?

  • February 25, 2019

我有以下查詢:

SELECT DISTINCT name, surname, id_number, gender FROM table1;

如何按性別過濾以獲取上述查詢結果的性別細分?我是否使用子查詢?如果是這樣,我該如何編寫子查詢?

請注意,在我的表中有重複的條目id_number

樣本數據:

-------------------------------------
Name    | Surname   |ID_No   |Gender|
-------------------------------------
John       Doe        1234A6    M
Jane       Doe        2553B7    F
Steve      Jobs       2636A8    M

預期產出

--------------
 M   |   F  |
---------------
 2       1

If id_numberis not UNIQUE (by extension) or aPRIMARY KEY你想要的是COUNT(DISTINCT ...)

SELECT
   gender, count(DISTINCT name, surname, id_number)
FROM table1
GROUP BY gender;

你想要,

  • 上的索引gender和第二個索引name, surname, id_number
  • 上的索引gender, name, surname, id_number

不能保證 MySQL 無論如何都會對它們做一些聰明的事情,但它會使用它們進行第一次排序為男性/女性,這至少會減少DISTINCT約 1/2 的負載。與可能翻倍的目前答案相比。

引用自:https://dba.stackexchange.com/questions/225261