我有如下表:MySQL-最大計數多組
╒═══════════╤════════════╤════════════╕
│ iddmp2g_2 │ A_BCF_name │ A_BTS_name │
╞═══════════╪════════════╪════════════╡
│ 1 │ CAR.Inem │ CAR.Inem_A │
├───────────┼────────────┼────────────┤
│ 2 │ CAR.Inem │ CAR.Inem_A │
├───────────┼────────────┼────────────┤
│ 3 │ CAR.Inem │ CAR.Inem_A │
├───────────┼────────────┼────────────┤
│ 4 │ CAR.Inem │ CAR.Inem_A │
├───────────┼────────────┼────────────┤
│ 5 │ CAR.Inem │ CAR.Inem_B │
├───────────┼────────────┼────────────┤
│ 6 │ CAR.Inem │ CAR.Inem_B │
├───────────┼────────────┼────────────┤
│ 7 │ CAR.Inem │ CAR.Inem_B │
├───────────┼────────────┼────────────┤
│ 8 │ CAR.Inem │ CAR.Inem_1 │
├───────────┼────────────┼────────────┤
│ 9 │ CAR.Inem │ CAR.Inem_1 │
├───────────┼────────────┼────────────┤
│ 10 │ CAR.Inem │ CAR.Inem_1 │
├───────────┼────────────┼────────────┤
│ 11 │ CAR.Inem │ CAR.Inem_2 │
├───────────┼────────────┼────────────┤
│ 12 │ CAR.Inem │ CAR.Inem_2 │
└───────────┴────────────┴────────────┘
如果我申請以下查詢表中我得到:
SELECT A_BCF_name, COUNT(A_BTS_name) from dmp2g_2
group by A_BCF_name, A_BTS_name
結果:
╔════════════╤════════════╤═══════════════════╗
║ A_BCF_name │ A_BTS_name │ COUNT(A_BTS_name) ║
╠════════════╪════════════╪═══════════════════╣
║ CAR.Inem │ CAR.Inem_A │ 4 ║
╟────────────┼────────────┼───────────────────╢
║ CAR.Inem │ CAR.Inem_B │ 3 ║
╟────────────┼────────────┼───────────────────╢
║ CAR.Inem │ CAR.Inem_1 │ 3 ║
╟────────────┼────────────┼───────────────────╢
║ CAR.Inem │ CAR.Inem_2 │ 2 ║
╚════════════╧════════════╧═══════════════════╝
接下來的方法是根據最後一個字符(數字或字母)得到兩組A_BTS_name,如下所示:
SELECT A_BCF_name, A_BTS_name, COUNT(A_BTS_name)
FROM dmp2g_2
WHERE SUBSTRING_INDEX(A_BTS_name,'_',-1) REGEXP '[0-9]+' /*getting only records that end in a number*/
GROUP BY A_BCF_name, A_BTS_name
輸出:在一個字母或字符結束
╔════════════╤════════════╤═══════════════════╗
║ A_BCF_name │ A_BTS_name │ COUNT(A_BTS_name) ║
╠════════════╪════════════╪═══════════════════╣
║ CAR.Inem │ CAR.Inem_1 │ 3 ║
╟────────────┼────────────┼───────────────────╢
║ CAR.Inem │ CAR.Inem_2 │ 2 ║
╚════════════╧════════════╧═══════════════════╝
獲取記錄。
SELECT A_BCF_name, A_BTS_name, COUNT(A_BTS_name)
FROM dmp2g_2
WHERE SUBSTRING_INDEX(A_BTS_name,'_',-1) REGEXP '[A-Za-z]' /*filter records that ends in a letter*/
GROUP BY A_BCF_name, A_BTS_name
輸出:
╔════════════╤════════════╤═══════════════════╗
║ A_BCF_name │ A_BTS_name │ COUNT(A_BTS_name) ║
╠════════════╪════════════╪═══════════════════╣
║ CAR.Inem │ CAR.Inem_A │ 4 ║
╟────────────┼────────────┼───────────────────╢
║ CAR.Inem │ CAR.Inem_B │ 3 ║
+────────────┼────────────┼───────────────────+
此時一切正常。
我的問題是如何獲得每種組的最大數量?我需要在CAR.Inem_A和CAR.Inem_B之間獲得最大數量,並在CAR.Inem_1和CAR.Inem_2之間獲得最大數量。結果應該是這樣的:
╔════════════╤════════════════════════╤════════════════════════╗
║ A_BCF_name │ MAX(A_BTS_name_number) │ MAX(A_BTS_name_letter) ║
╠════════════╪════════════════════════╪════════════════════════╣
║ CAR.Inem │ 3 │ 4 ║
╚════════════╧════════════════════════╧════════════════════════╝
我感謝所有幫助
感謝
什麼是'numTRX850'和'numTRX1900'?在您的示例數據中它不存在。但是在你的預期結果中,你有那些專欄。 – Viki888
你似乎有很多重複。你的主鍵在哪裏? – Strawberry
@ Viki888是最大計數結果的別名 – Leo99