我有一个类似于下面的表(地址实际上是IP地址,但为了简单起见,我将它们保持简短)。
| Cust ID | Address |
| ------- | --------|
| 1 | 111 |
| 1 | 222 |
| 1 | 222 |
| 1 | 222 |
| 1 | 333 |
| 2 | 444 |
| 2 | 444 |
| 2 | 444 |
| 2 | 444 |
| 3 | 555 |
我想获得每个客户的不同地址的计数,按计数排序:
| Cust ID | Address | Count |
| ------- | --------|-------|
| 2 | 444 | 4 |
| 1 | 222 | 3 |
| 1 | 111 | 1 |
| 1 | 333 | 1 |
| 3 | 555 | 1 |
因此,如上所述,客户2使用地址444四次;客户1使用地址222三次,111一次,333一次;等等。
FWIW,我用的是mysql。
谢谢!
3条答案
按热度按时间oaxa6hgo1#
要聚合不同客户ID之间的地址频率,请将GROUP BY子句与COUNT子句结合使用,以确定每个客户ID的地址频率。
请注意,对于GROUP BY子句,将对客户ID和地址进行分组。COUNT(*)用于计算每个组中出现的所有条目。
作为另一示例,如果只希望确定地址的频率而不管它们属于哪个客户ID,则只按地址分组:
但是,按多列分组(如第一种情况)会缩小结果范围,以确保考虑到两个相关列的聚合。
uoifb46i2#
使用GROUP BY时,一个好的经验法则是将COUNT未使用的所有选定列传递给GROUP BY。
vu8f3i0k3#
选择CustId、地址、计数(地址)作为计数
来自客户
按客户ID、地址分组;