簡體   English   中英

在MYSQL中跨多個列的SELECT SUM(DISTINCT值)

[英]SELECT SUM(DISTINCT values) across multiple columns in MYSQL

我有一個包含5列的MySQL表來存儲各種值。 對於表中的每個記錄,5列存儲單個值(大約15個中的一個)。 這是結構的一個例子:

| COL1 | COL2 | COL3 |  COL4 |  COL5 |
|------|------|------|-------|-------|
| val1 | val3 | val8 | val11 | val14 |
| val2 | val3 | val5 |  val9 | val12 |
| val1 | val2 | val6 | val14 | val15 |
| val3 | val5 | val9 | val10 | val12 |
| val2 | val4 | val7 | val11 | val14 |

我想創建一個查詢,對這5列中的每一列的唯一值求和。 結果應顯示5列中存在val1,val2,val3等的總次數。

理想情況下,結果的結構如下:

val  | total
_____________________

val1 |  34

val2 |  12

val3 |  23

val4 |  14

val5 |  21

etc  |  etc

在此先感謝您的幫助,非常感謝。

一種方法: SQL小提琴

SELECT val,
       COUNT(*) AS total
FROM   (SELECT Col1 AS Val
        FROM   YourTable
        UNION ALL
        SELECT Col2 AS Val
        FROM   YourTable
        UNION ALL
        SELECT Col3 AS Val
        FROM   YourTable
        UNION ALL
        SELECT Col4 AS Val
        FROM   YourTable
        UNION ALL
        SELECT Col5 AS Val
        FROM   YourTable) AS T
GROUP  BY val 

或者另一個: SQL小提琴

SELECT CASE N
         WHEN 1 THEN Col1
         WHEN 2 THEN Col2
         WHEN 3 THEN Col3
         WHEN 4 THEN Col4
         WHEN 5 THEN Col5
       END AS Val,
       COUNT(*) AS total
FROM   YourTable
       CROSS JOIN (SELECT 1 AS N
                   UNION ALL
                   SELECT 2
                   UNION ALL
                   SELECT 3
                   UNION ALL
                   SELECT 4
                   UNION ALL
                   SELECT 5) AS T
GROUP  BY Val

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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