5、6.合并

5-1.175.组合两个表

1)左联结(left outer join),联结结果保留左表的全部数据

 

2)右联结(right outer join),联结结果保留右表的全部数据

 

3)内联结(inner join),取两表的公共数据

 

1 # Write your MySQL query statement below
2 SELECT
3    Person.firstname firstName,Person.lastname lastName,Address.city,Address.state
4 FROM
5    Person LEFT OUTER JOIN Address ON Person.personID = Address.personID; //别忘了:on 两个表联结条件!!

 

5-2.1581.进店却未进行过交易的顾客

 LEFT OUTER JOIN + GROUP 

1 # Write your MySQL query statement below
2 SELECT customer_id,COUNT(customer_id) count_no_trans
3 FROM 
4  Visits LEFT OUTER JOIN Transactions ON Visits.visit_id = Transactions.visit_id
5 WHERE 
6  amount IS NULL
7 GROUP BY customer_id;

 

5-3.1148.文章浏览I

1 # Write your MySQL query statement below
2 SELECT DISTINCT
3    author_id id
4 FROM
5    Views
6 WHERE
7    author_id = viewer_id
8 ORDER BY author_id;

 

6-1.197.上升的温度

时间计算函数:https://leetcode.cn/problems/rising-temperature/solution/tu-jie-sqlmian-shi-ti-ru-he-bi-jiao-ri-qi-shu-ju-b/

1.datediff(日期1, 日期2):

得到的结果是日期1与日期2相差的天数

如果日期1比日期2大,结果为正;如果日期1比日期2小,结果为负;

2.timestampdiff(时间类型, 日期1, 日期2):

这个函数和上面diffdate的正、负号规则刚好相反。

日期1大于日期2,结果为负,日期1小于日期2,结果为正。

在“时间类型”的参数位置,通过添加“day”, “hour”, “second”等关键词,来规定计算天数差、小时数差、还是分钟数差

 

i.

1 # Write your MySQL query statement below
2 SELECT w1.id Id
3 FROM 
4    Weather w1,Weather w2
5 WHERE
6    w1.Temperature > w2.Temperature AND DATEDIFF(w1.recordDate,w2.recordDate) = 1;

ii.

1 # Write your MySQL query statement below
2 SELECT w1.id Id
3 FROM 
4    Weather w1 /*ACROSS*/ JOIN Weather w2 ON w1.Temperature > w2.Temperature AND DATEDIFF(w1.recordDate,w2.recordDate) = 1;   

 

6-2.607.销售员

题目没说公司RED的代号一定是1,所以where后面条件为

Company.name = 'RED' AND Orders.com_id = Company.com_id 而不是
Company.com_id = 1 AND Orders.com_id = Company.com_id
i.
1 # Write your MySQL query statement below
2 SELECT SalesPerson.name
3 FROM 
4   SalesPerson
5 WHERE 
6   SalesPerson.sales_id NOT IN (SELECT Orders.sales_id FROM Company,Orders WHERE Company.name = 'RED' AND Orders.com_id = Company.com_id);

ii. "LEFT OUTER JOIN" 也可以写作 "LEFT JOIN" 

1 SELECT s.name
2 FROM
3     salesperson s
4 WHERE
5     s.sales_id NOT IN (SELECT o.sales_id
6                FROM orders o LEFT JOIN company c ON o.com_id = c.com_id
7                WHERE c.name = 'RED');

 

posted @ 2022-08-08 17:36  balabalahhh  阅读(39)  评论(0)    收藏  举报