Mysql系列问题(一)

如果觉得有用请给我点个赞

一、 查询所有姓汪的员工。

表格:employee表和department表
字段:employee表包含employee____id, employee____name, department____id; department表包含department____id, department____name。

SELECT e.employee_id, e.employee_name, e.department_id 
FROM employee e 
INNER JOIN department d 
ON e.department_id = d.department_id WHERE e.employee_name LIKE '汪%' 
AND e.department_id = d.department_id;
FROM employee 
WHERE employee_name LIKE '汪%';

这个查询使用了INNER JOIN操作,将employee表和department表联接在一起。然后,在WHERE子句中,我们使用LIKE操作符来查找所有姓“汪”的员工,并使用等于操作符=筛选出department_id等于department表中的相应department_id的员工。最后,我们选择要从查询结果中返回的员工ID、员工姓名和部门ID。

二、查询所有女性员工的姓名和年龄。

表格:employee表
字段:employee表包含employee____id, employee____name, age, gender。

SELECT employee_name, age 
FROM employee 
WHERE gender = '女';

这个查询使用了等于操作符=来筛选出性别为“女”的员工。然后我们选择要从查询结果中返回的员工姓名和年龄。

三、查询employee表中薪水最高的员工的姓名和薪水。

表格:employee表
字段:employee表包含employee____id, employee____name, salary。

SELECT employee_name, salary 
FROM employee 
ORDER BY salary DESC 
LIMIT 1;

这个查询使用了ORDER BY子句,将所有员工按照薪水从高到低排序,然后使用LIMIT子句来限制结果集只返回第一行,即薪水最高的员工。最后,我们选择要从查询结果中返回的员工姓名和薪水。

四、查询employee表中所有薪水大于10000的员工的姓名和薪水。

表格:employee表
字段:employee表包含employee____id, employee____name, salary。

SELECT employee_name, salary 
FROM employee 
WHERE salary > 10000;

这个查询使用了大于操作符>来筛选薪水大于10000的员工。然后我们选择要从查询结果中返回的员工姓名和薪水。

五、查询employee表中所有薪水在10000到20000之间的员工的姓名和薪水。

SELECT employee_name, salary 
FROM employee 
WHERE salary BETWEEN 10000 AND 20000; 

 这个查询使用了BETWEEN...AND操作符来筛选薪水在10000到20000之间的员工。然后我们选择要从查询结果中返回的员工姓名和薪水。

六、查询employee表中所有在部门1工作的员工的姓名和薪水。

表格:employee表
字段:employee表包含employee____id, employee____name, salary, department____id。

SELECT employee_name, salary 
FROM employee 
WHERE department_id = 1;

这个查询使用了等于操作符=来筛选出部门ID等于1的员工。然后我们选择要从查询结果中返回的员工姓名和薪水。

七、查询employee表中所有不在部门1工作的员工的姓名和薪水。

表格:employee表
字段:employee表包含employee____id, employee____name, salary, department____id。

SELECT employee_name, salary 
FROM employee
WHERE department_id <> 1;

这个查询使用了不等于操作符<>来筛选出部门ID不等于1的员工。然后我们选择要从查询结果中返回的员工姓名和薪水。

八、统计每个用户的订单数和总金额,按订单数降序排列。

表名:orders
字段:user____id, amount

SELECT user_id, COUNT(*) AS order_count, SUM(amount) AS total_amount 
FROM orders 
GROUP BY user_id 
ORDER BY order_count DESC;

这个查询使用了GROUP BY子句,将所有订单按照用户ID分组。然后使用COUNT函数计算每个用户的订单数,使用SUM函数计算每个用户的总金额。最后,我们按照订单数降序排列结果集,以便从最多订单的用户开始返回结果。

九、找到存在重复数据的记录。

表名:table____name
字段:col1, col2, col3

SELECT col1, col2, col3, 
COUNT(*) as count 
FROM table_name 
GROUP BY col1, col2, col3 
HAVING COUNT(*) > 1;

这个查询使用GROUP BY子句,将所有行按照col1, col2和col3字段的组合分组。然后使用COUNT函数计算每个组合的数量,如果数量大于1,说明该行存在重复。最后,我们使用HAVING子句过滤掉数量小于等于1的组合,只返回存在重复的行。

十、找到每个城市中销售额最高的产品。

表名:sales
字段:city, product, sales____amount

SELECT city, product, MAX(sales_amount) AS max_sales 
FROM sales 
GROUP BY city, product
HAVING sales_amount = MAX(sales_amount);

这个查询使用GROUP BY子句,将所有销售按照城市和产品分组。然后使用MAX函数计算每个组合的最高销售额。最后,我们使用HAVING子句过滤掉不是最高销售额的销售记录,只返回每个城市中销售额最高的产品。

十一、找到同时存在于表A和表B中的记录。

表名:table____A, table____B
字段:id

SELECT A.id 
FROM table_A AS A 
INNER JOIN table_B AS B ON A.id = B.id;

这个查询使用INNER JOIN语句将表A和表B连接在一起,只返回两个表中都存在的记录。在ON子句中,我们使用id字段将两个表连接起来,以便找到它们共同拥有的记录。最终,我们只返回A表中的id字段作为结果集。

十二、找到每个用户的最近一次订单时间。

表名:orders
字段:user____id, order____time

SELECT user_id, MAX(order_time) as latest_order_time 
FROM orders 
GROUP BY user_id;

这个查询使用GROUP BY子句,将所有订单按照用户ID分组。然后使用MAX函数计算每个组合的最大订单时间,也就是每个用户的最近一次订单时间。最后,我们只返回user_id和latest_order_time字段作为结果集。

十三、找到销售额排名前10的产品。

表名:sales
字段:product, sales____amount

SELECT product, sales_amount 
FROM sales 
ORDER BY sales_amount DESC 
LIMIT 10;

这个查询使用ORDER BY子句按照sales_amount字段降序排列所有销售记录,然后使用LIMIT子句仅返回前10个结果。最终,我们只返回product和sales_amount字段作为结果集。这将会给出销售额排名前10的产品。

十四、找到销售额在5000以上的产品。

表名:sales
字段:product, sales____amount

SELECT product, sales_amount 
FROM sales 
WHERE sales_amount > 5000;

这个查询使用WHERE子句来过滤所有销售记录,只返回销售额大于5000的记录。最终,我们只返回product和sales_amount字段作为结果集。这将会给出所有销售额在5000以上的产品。

十五、找到同时拥有产品A和产品B的用户。

表名:user____products
字段:user____id, product

SELECT user_id
FROM user_products
WHERE product IN ('A', 'B')
GROUP BY user_id
HAVING COUNT(DISTINCT product) = 2;

这个查询使用WHERE子句选择同时拥有产品A和产品B的所有记录,并使用GROUP BY和HAVING子句仅返回具有2个不同产品的用户ID。最终,我们只返回user_id字段作为结果集。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值