0

假设我有一个像这样的简单 SQL 表:http ://sqlfiddle.com/#!2/ce3fd/2/0

CREATE TABLE Trends
(Country varchar(250),
CTR int);

INSERT INTO Trends (Country, CTR)
VALUES ('America', 5),
('America', 10),
('America', 12),
('America', 40),
('England', 10),
('England', 410),
('England', 310),
('England', 210);

我想设置一个条件

A) 测试每个单独的国家 B) 仅当该国家的 ALL VALUES 的 CTR 高于 10 时才返回该国家

例如,在此表中,不会返回“America”,因为它的 CTR 低于 10。England 将被返回,因为如果其 CTR 高于 10,则返回 all。

我会在这里使用 CASE 项目吗?

4

2 回答 2

3

听起来您可以使用两部分 WHERE 子句,一部分将测试那些有ctr >= 10和那些不存在的国家/地区ctr < 10应该在哪里工作:

SELECT country, ctr
FROM Trends
WHERE ctr >= 10
  and country not in (select country
                      from trends
                      where ctr < 10);

请参阅带有演示的 SQL Fiddle

于 2013-06-24T18:43:36.063 回答
1

您可以通过以下方式避免子查询:

SELECT Country
FROM Trends
GROUP BY Country
HAVING MIN(CTR) >= 10
于 2013-06-24T18:49:36.537 回答