Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions solution/0600-0699/0619.Biggest Single Number/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,14 +96,28 @@ MyNumbers table:
### **SQL**

```sql
SELECT MAX(a.num) AS num
# Write your MySQL query statement below
SELECT max(num) AS num
FROM
(
SELECT num
FROM MyNumbers
GROUP BY num
HAVING count(*) = 1
) AS a;
HAVING count(1) = 1
) AS t;
```

```sql
# Write your MySQL query statement below
SELECT
CASE
WHEN count(1) = 1 THEN num
ELSE NULL
END AS num
FROM MyNumbers
GROUP BY num
ORDER BY 1 DESC
LIMIT 1;
```

<!-- tabs:end -->
20 changes: 17 additions & 3 deletions solution/0600-0699/0619.Biggest Single Number/README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,14 +84,28 @@ MyNumbers table:
### **SQL**

```sql
SELECT MAX(a.num) AS num
# Write your MySQL query statement below
SELECT max(num) AS num
FROM
(
SELECT num
FROM MyNumbers
GROUP BY num
HAVING count(*) = 1
) AS a;
HAVING count(1) = 1
) AS t;
```

```sql
# Write your MySQL query statement below
SELECT
CASE
WHEN count(1) = 1 THEN num
ELSE NULL
END AS num
FROM MyNumbers
GROUP BY num
ORDER BY 1 DESC
LIMIT 1;
```

<!-- tabs:end -->
18 changes: 10 additions & 8 deletions solution/0600-0699/0619.Biggest Single Number/Solution.sql
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
SELECT MAX(a.num) AS num
FROM
(
SELECT num
FROM MyNumbers
GROUP BY num
HAVING count(*) = 1
) AS a;
# Write your MySQL query statement below
SELECT
CASE
WHEN count(1) = 1 THEN num
ELSE NULL
END AS num
FROM MyNumbers
GROUP BY num
ORDER BY 1 DESC
LIMIT 1;
5 changes: 3 additions & 2 deletions solution/0600-0699/0620.Not Boring Movies/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,10 @@
### **SQL**

```sql
# Write your MySQL query statement below
SELECT *
FROM cinema
WHERE description NOT LIKE '%boring%' AND mod(id, 2) = 1
FROM Cinema
WHERE description != 'boring' AND id % 2 = 1
ORDER BY rating DESC;
```

Expand Down
5 changes: 3 additions & 2 deletions solution/0600-0699/0620.Not Boring Movies/README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,10 @@ We have three movies with odd-numbered IDs: 1, 3, and 5. The movie with ID = 3 i
### **SQL**

```sql
# Write your MySQL query statement below
SELECT *
FROM cinema
WHERE description NOT LIKE '%boring%' AND mod(id, 2) = 1
FROM Cinema
WHERE description != 'boring' AND id % 2 = 1
ORDER BY rating DESC;
```

Expand Down
5 changes: 3 additions & 2 deletions solution/0600-0699/0620.Not Boring Movies/Solution.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Write your MySQL query statement below
SELECT *
FROM cinema
WHERE description NOT LIKE '%boring%' AND mod(id, 2) = 1
FROM Cinema
WHERE description != 'boring' AND id % 2 = 1
ORDER BY rating DESC;
13 changes: 13 additions & 0 deletions solution/0600-0699/0626.Exchange Seats/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,17 @@ from
seat
```

```sql
# Write your MySQL query statement below
SELECT
CASE
WHEN id & 1 = 0 THEN id - 1
WHEN row_number() OVER (ORDER BY id) != count(id) OVER () THEN id + 1
ELSE id
END AS id,
student
FROM Seat
ORDER BY 1;
```

<!-- tabs:end -->
13 changes: 13 additions & 0 deletions solution/0600-0699/0626.Exchange Seats/README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,4 +99,17 @@ from
seat
```

```sql
# Write your MySQL query statement below
SELECT
CASE
WHEN id & 1 = 0 THEN id - 1
WHEN row_number() OVER (ORDER BY id) != count(id) OVER () THEN id + 1
ELSE id
END AS id,
student
FROM Seat
ORDER BY 1;
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
Expand Up @@ -66,22 +66,20 @@ Result 表:

<!-- 这里可写通用的实现逻辑 -->

**方法一:GROUP BY + HAVING**

我们将 `Customer` 表按照 `customer_id` 进行分组,然后使用 `HAVING` 子句筛选出购买了所有产品的客户。

<!-- tabs:start -->

### **SQL**

```sql
# Write your MySQL query statement below
SELECT
customer_id
SELECT customer_id
FROM Customer
GROUP BY customer_id
HAVING
COUNT(DISTINCT product_key) = (
SELECT
COUNT(1)
FROM Product
);
GROUP BY 1
HAVING count(DISTINCT product_key) = (SELECT count(1) FROM Product);
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
Expand Up @@ -79,16 +79,10 @@ The customers who bought all the products (5 and 6) are customers with IDs 1 and

```sql
# Write your MySQL query statement below
SELECT
customer_id
SELECT customer_id
FROM Customer
GROUP BY customer_id
HAVING
COUNT(DISTINCT product_key) = (
SELECT
COUNT(1)
FROM Product
);
GROUP BY 1
HAVING count(DISTINCT product_key) = (SELECT count(1) FROM Product);
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
# Write your MySQL query statement below
SELECT
customer_id
SELECT customer_id
FROM Customer
GROUP BY customer_id
HAVING
COUNT(DISTINCT product_key) = (
SELECT
COUNT(1)
FROM Product
);
GROUP BY 1
HAVING count(DISTINCT product_key) = (SELECT count(1) FROM Product);
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,19 @@ Result 表:

<!-- 这里可写通用的实现逻辑 -->

`GROUP BY` + `HAVING` 解决。
**方法一:使用 `GROUP BY` + `HAVING`**

我们将 `ActorDirector` 表按照 `actor_id` 和 `director_id` 进行分组,然后使用 `HAVING` 过滤出合作次数大于等于 $3$ 次的组。

<!-- tabs:start -->

### **SQL**

```sql
SELECT
actor_id,
director_id
# Write your MySQL query statement below
SELECT actor_id, director_id
FROM ActorDirector
GROUP BY actor_id, director_id
GROUP BY 1, 2
HAVING count(1) >= 3;
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,10 @@ Use `GROUP BY` & `HAVING`.
### **SQL**

```sql
SELECT
actor_id,
director_id
# Write your MySQL query statement below
SELECT actor_id, director_id
FROM ActorDirector
GROUP BY actor_id, director_id
GROUP BY 1, 2
HAVING count(1) >= 3;
```

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
SELECT
actor_id,
director_id
# Write your MySQL query statement below
SELECT actor_id, director_id
FROM ActorDirector
GROUP BY actor_id, director_id
GROUP BY 1, 2
HAVING count(1) >= 3;
13 changes: 7 additions & 6 deletions solution/1000-1099/1068.Product Sales Analysis I/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,19 +78,20 @@ Result 表:

<!-- 这里可写通用的实现逻辑 -->

**方法一:使用 `JOIN` 内连接**

我们直接使用 `JOIN` 连接 `Sales` 和 `Product` 两张表,连接字段为 `product_id`,然后选择需要的字段即可。

<!-- tabs:start -->

### **SQL**

```sql
# Write your MySQL query statement below
SELECT
p.product_name AS product_name,
s.year AS year,
s.price AS price
SELECT product_name, year, price
FROM
Sales AS s
LEFT JOIN Product AS p ON s.product_id = p.product_id;
Sales
JOIN Product USING (product_id);
```

<!-- tabs:end -->
9 changes: 3 additions & 6 deletions solution/1000-1099/1068.Product Sales Analysis I/README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,10 @@ From sale_id = 7, we can conclude that Apple was sold for 9000 in the year 2011.

```sql
# Write your MySQL query statement below
SELECT
p.product_name AS product_name,
s.year AS year,
s.price AS price
SELECT product_name, year, price
FROM
Sales AS s
LEFT JOIN Product AS p ON s.product_id = p.product_id;
Sales
JOIN Product USING (product_id);
```

<!-- tabs:end -->
9 changes: 3 additions & 6 deletions solution/1000-1099/1068.Product Sales Analysis I/Solution.sql
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
# Write your MySQL query statement below
SELECT
p.product_name AS product_name,
s.year AS year,
s.price AS price
SELECT product_name, year, price
FROM
Sales AS s
LEFT JOIN Product AS p ON s.product_id = p.product_id;
Sales
JOIN Product USING (product_id);
10 changes: 6 additions & 4 deletions solution/1000-1099/1069.Product Sales Analysis II/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,17 +71,19 @@ Result 表:

<!-- 这里可写通用的实现逻辑 -->

**方法一:使用 `GROUP BY`**

我们可以使用 `GROUP BY`,按照 `product_id` 分组,然后每一组对 `quantity` 求和。

<!-- tabs:start -->

### **SQL**

```sql
# Write your MySQL query statement below
SELECT
product_id,
sum(quantity) AS total_quantity
SELECT product_id, sum(quantity) AS total_quantity
FROM Sales
GROUP BY product_id;
GROUP BY 1;
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,9 @@ Product table:

```sql
# Write your MySQL query statement below
SELECT
product_id,
sum(quantity) AS total_quantity
SELECT product_id, sum(quantity) AS total_quantity
FROM Sales
GROUP BY product_id;
GROUP BY 1;
```

<!-- tabs:end -->
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
# Write your MySQL query statement below
SELECT
product_id,
sum(quantity) AS total_quantity
SELECT product_id, sum(quantity) AS total_quantity
FROM Sales
GROUP BY product_id;
GROUP BY 1;
17 changes: 17 additions & 0 deletions solution/1000-1099/1070.Product Sales Analysis III/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,21 @@ WHERE
);
```

```sql
# Write your MySQL query statement below
WITH
T AS (
SELECT
*,
rank() OVER (
PARTITION BY product_id
ORDER BY year
) AS rk
FROM Sales
)
SELECT product_id, year AS first_year, quantity, price
FROM T
WHERE rk = 1;
```

<!-- tabs:end -->
Loading