在多个国家/地区可用的 SQL SELECT 产品
Posted
技术标签:
【中文标题】在多个国家/地区可用的 SQL SELECT 产品【英文标题】:SQL SELECT products which are available in multiple countries 【发布时间】:2019-11-25 18:39:59 【问题描述】:我有这张水果的市场和价格表(表实际上只是摘录)
Product Market Price
Apple UK 4
Apple DE 5
Apple US 4
Apple IT 3
Banana US 2
Orange UK 1
Kiwi ES 3
Kiwi DE 10
Kiwi US 12
Kiwi UK 11
Cucumb IT 5
Cucumb DE 4
Cucumb UK 3
Peach IT 12
Peach DE 10
Peach UK 10
Peach US 11
现在我只想选择(或分组)在德国、英国、IT 和美国四个市场都有售的产品。这应该导致这个表:
Product Market Price
Apple UK 4
Apple DE 5
Apple US 4
Apple IT 3
Peach IT 12
Peach DE 10
Peach UK 10
Peach US 11
我用 group by+have+Count Distinct 试过了,但是没用。见下文
SELECT
market, product, AVG(price) as pr
FROM
fruits
WHERE
market IN (DE, IT, UK, US)
GROUP BY
market, product
HAVING Count (DISTINCT market=4)
我猜我以错误的方式使用了不同的计数。 请帮忙。谢谢!
【问题讨论】:
【参考方案1】:拥有-条件Count (DISTINCT market=4)
应该是:
SELECT
market, product, AVG(price) as pr
FROM
fruits
WHERE
market IN (DE, IT, UK, US)
GROUP BY
market, product
HAVING Count (DISTINCT market) = 4
【讨论】:
我理解答案,但不是赞成票。在此查询中,count(distinct market)
始终是 1
。【参考方案2】:
您的产品没有重复的国家/地区。我会推荐简单的窗口函数:
select f.*
from (select f.*, count(*) over (partition by product) as cnt
from fruits f
where market in ('DE', 'IT', 'UK', 'US')
) f
where cnt = 4;
【讨论】:
以上是关于在多个国家/地区可用的 SQL SELECT 产品的主要内容,如果未能解决你的问题,请参考以下文章
如何在 WooCommerce 中更改结帐国家/地区选择的悬停颜色?