sql - 有条件的重复
问题描述
我想获取article_id
每个的重复数merchant_id
,其中zip_code
不相同。请看下面的例子:
桌子
merchant_id article_id zip_code
1 4555 1000
1 4555 1003
1 4555 1002
1 3029 1000
2 7539 1005
2 7539 1005
2 7539 1002
2 1232 1006
3 5555 1000
3 5555 1001
3 5555 1002
3 5555 1003
输出表
merchant_id count_duplicate
1 3
2 2
3 4
这是我目前正在使用的查询,但我正在努力包含 zip_code 条件:
SELECT merchant_id
,duplicate_count
FROM main_table mt
JOIN(select article_id, count(*) AS duplicate_count
from main_table
group by article_id
having count(article_id) >1) mt_1
ON mt.article_id ON mt_1.article_id = mt.article_id
解决方案
如果我理解正确,您可以使用两个级别的聚合:
SELECT merchant_id, SUM(num_zips)
FROM (SELECT merchant_id, article_id, COUNT(DISTINCT zip_code) AS num_zips
FROM main_table
GROUP BY merchant_id, article_id
) ma
WHERE ma.num_zips > 1
GROUP BY merchant_id;
推荐阅读
- scala - 在 Scala 的列表中创建空白
- php - 在使用工厂为数据库播种时使用 Laravel 中的 PHP Faker 生成“唯一的”条目
- android - Bindview 在 Eclipse 中不起作用
- html - 如何在同一网页的段之间创建和导航
- android - 有没有一种简单的方法可以从 Kotlin 中的对象列表中获取数组?
- mysql - MYSQL - 错误代码:1242。子查询返回超过 1 行
- javascript - JavaScript - 如何增加计数
- python - “Axes3DSubplot”对象没有属性“体素”
- node.js - 使用 CSPRNG 基数有什么副作用
- ddev - 升级到 ddev v0.19.0 后,我无法执行 ddev import-db: Access denied for root