我有如下表: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