sql面试题学习

https://www.nowcoder.com/discuss/95812


餐馆菜单输出最贵的五道菜

CREATE TABLE `menu` (
  `MENU_ID` decimal(16,0) NOT NULL COMMENT '菜单名',
  `MENU_NAME` varchar(250) NOT NULL COMMENT '菜名',
  `PRICE` decimal(16,0) DEFAULT NULL COMMENT '价格',
  PRIMARY KEY (`MENU_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='菜单表'

SELECT menu_name from menu ORDER BY price desc limit 5 ;

/* top 是sql server中的语法,如果想在mysql实现分页查询通过limit */

学校中有一个年级表,有两个核心字段,student_id和class_id,把年级中大于30人的班级查出来?

 

CREATE TABLE `grade` (
  `grade_id` decimal(16,0) NOT NULL COMMENT 'ID',
  `student_id` varchar(250) NOT NULL COMMENT '姓名',
  `class_id` decimal(16,0) DEFAULT NULL COMMENT '班级',
  PRIMARY KEY (`grade_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='年级表'

select class_id from grade GROUP BY class_id having count(class_id)>1

SQL有哪些聚合函数?

 

SQL基本函数,聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,
聚合函数都会忽略空值。 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。

  • 平均值:SELECT AVG(column_name) FROM table_name 
  • 总和:SELECT SUM(column_name) FROM table_name;
  • 最大:SELECT MAX(column_name) FROM table_name
  • 分组:group by

  • 条件:增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用,HAVING 子句可以让我们筛选分组后的各组数据。

  • 运算符EXISTS: SELECT column_name(s) FROM table_name WHERE EXISTS(SELECT column_name FROM table_name WHERE condition);
  • 提取字符:SELECT MID(column_name,start[,length]) FROM table_name;
  • round() 函数用于数据的四舍五入
  • TIMESTAMPDIFF - 计算两个DATEDATETIME值之间的差异
    • TIMESTAMPDIFF( day, '2010-01-01', NOW( ) ) ddiff;

  • IF - 如果条件为TRUE则返回“YES”,如果条件为FALSE则返回“NO”

    • SELECT IF(500<1000, "YES", "NO");

       

 

 

 

 

 

https://zhuanlan.zhihu.com/p/583107731

posted @ 2023-07-21 08:40  CodingOneTheWay  阅读(11)  评论(0编辑  收藏  举报
回到顶部