【发布时间】:2019-05-16 05:29:55
【问题描述】:
首先,我从以下查询生成了一个表:
select su.supplier_zip, sp.shop_zip, COUNT(p.ptypes)
from supplier su
inner join parts p on su.sid=p.sid
inner join sales s on p.parts_pid=s.pid
inner join shop sp on s.shop_id=sp.shop_id
group by sp.shop_zip, su.supplier_zip
order by su.supplier_zip;
+--------------+----------+-----------------+
| supplier_zip | shop_zip | COUNT(p.ptypes) |
+--------------+----------+-----------------+
| 7733 | 85254 | 6 |
| 7733 | 33603 | 2 |
| 7733 | 92821 | 7 |
| 7733 | 95070 | 2 |
| 7733 | 94010 | 5 |
| 7733 | 68154 | 6 |
| 7733 | 45277 | 4 |
| 7733 | 94568 | 3 |
| 7733 | 55401 | 3 |
| 7733 | 85308 | 5 |
| 7733 | 85226 | 6 |
| 7733 | 11021 | 3 |
| 7733 | 35243 | 5 |
| 7733 | 7764 | 3 |
| 7733 | 26505 | 1 |
| 26505 | 85226 | 6 |
| 26505 | 55401 | 4 |
| 26505 | 92821 | 5 |
| 26505 | 45277 | 1 |
| 26505 | 26505 | 6 |
| 26505 | 94568 | 4 |
| 26505 | 85254 | 6 |
...
我正在尝试获取列出的 COUNTS 的最小值。所以我在一个选择中做了一个选择,我最终得到:
+-------------+---------+-----------+
| supplierzip | shopzip | MIN(type) |
+-------------+---------+-----------+
| 7733 | 55401 | 1 |
| 26505 | 85308 | 1 |
| 33603 | 94568 | 3 |
| 45277 | 33603 | 1 |
| 55401 | 55401 | 1 |
| 60601 | 85254 | 3 |
| 68154 | 94568 | 2 |
| 85226 | 85226 | 6 |
| 92821 | 85226 | 5 |
| 94568 | 45277 | 2 |
+-------------+---------+-----------+
使用查询:
select supplierzip, shopzip, MIN(type)
from (
select su.supplier_zip as supplierzip, sp.shop_zip as shopzip, COUNT(p.ptypes) as type
from supplier su
inner join parts p on su.sid=p.sid
inner join sales s on p.parts_pid=s.pid
inner join shop sp on s.shop_id=sp.shop_id
group by sp.shop_zip, su.supplier_zip
order by su.supplier_zip)a
group by supplierzip;
结果不对。因为当您查看供应商zip-7733 时,shopzip 应该是 26505,MIN(num) 为 1。但这不是我得到的答案。
【问题讨论】:
-
您的查询应该会引发错误。 shopzip 不在组中
-
当你将 shopzip 添加到组中时,它会列出所有不同的类型,但我只想要 min
-
是的,但如果你这样做,你就不会得到你所说的结果。你是怎么得到这个结果的?
-
难道没有办法做到这一点,当你得到每个供应商zip的最小值时,你就会得到相应的shopzip?
-
肯定有。我想知道,您是如何达到当前结果的,以便我们继续努力
标签: sql count mariadb min groupwise-maximum