我有一个非规范化的表,记录,列:
biz_address、customer_name、dept_ID、order_ID、order_amount。
biz_address和customer_name具有重复的列条目。
如何获取每个地址超过5个订单的地址的所有订单列表?
我想要的是这样的结果集...
+-----------------+-----------+------------+----------+-----------+
| biz_address | customer_name | dept_ID | order_ID | order_amount |
+-----------------+-----------+------------+----------+-----------+
| 100 CLAY DR | REAL | 1 | 54 | 60 |
| 100 CLAY DR | REAL | 2 | 55 | 4 |
| 100 CLAY DR | REAL | 3 | 56 | 5 |
...
| 11 MOORE ST | ABCO | 10 | 67 | 7 |
| 11 MOORE ST | ABCO | 11 | 78 | 2 |
| 11 MOORE ST | ABCO | 12 | 79 | 4 |
| 11 MOORE ST | ABCO | 13 | 80 | 8 |
字符串
我知道怎么计数:
SELECT biz_address, customer_name, order_ID, COUNT(*)
FROM records
GROUP BY customer_name
HAVING COUNT(*) > 5;
型
返回这个...
+----------------+------------+------------+----------+
| biz_address | customer_name | order_ID | COUNT(*) |
+--------+------------+---------------+----------+
| 100 CLAY DR | REAL | 54 | 6 |
| 11 MOORE ST | ABC | 67 | 8 |
型
2条答案
按热度按时间0vvn1miw1#
使用子查询联接原始表,该子查询获取具有指定重复数的所有地址。
字符串
vfh0ocws2#
这里有一个替代解决方案,使用
COUNT()
作为窗口函数,而不是聚合函数。字符串
窗口函数需要MySQL 8.0或更高版本。