SQL 使用心得【持续更新】

简介: SQL 使用心得【持续更新】


  • COUNT(字段) 不会统计 NULL 值,但是COUNT(*)会
  • 只要有子查询,就需要给子查询定义别名!
  • where 后面的条件表达式中不能存在聚合函数,但是 Having 可以
  • 聚合函数基本上都是需要配合 group by 使用(除非把当前全局的数据当做一个分组),否则查询粒度无法保证,一般聚合函数之外的字段都要放到 group by 之后
  • 执行顺序:from > on > where > group by > having > select > distinct > order by > top。但是 group by 和 having 都可以使用 select 后面定义的别名,但是 where 后面不能使用 select 中定义的别名
  • where 是基于行进行过滤,而 having 是基于组进行过滤
  • NULL 占用空间(不管是 MySQL 还是 Hive),但是 '' 不占用空间
  • MySQL中没有Boolean,而是用Tinyint(1)去接收。TINYINT(1) 类型可以存储 0 或 1,分别对应 false 或 true。
  • 笛卡尔积可以通过 join 但是忽略 on 条件实现(MySQL 还提供了 cross join,但是 Hive 没有)
  • 聚合函数中并不是必须得是字段名,也可以是表达式
-- 查询每个部门中年龄大于 50 的员工数 
SELECT
    dept_id,
    COUNT(age) cnt
FROM
    department
GROUP BY
    dept_id
HAVING
    age > 50
 
-- 等同于
 
SELECT
    dept_id,
    COUNT(age > 50) cnt
FROM
    department
GROUP BY
    dept_id
  • select 语句也可以作为一个字段,前提是查询结果只能有一个字段
-- 有两张表:Register 和 Users 
-- 查询用户的注册率
SELECT
    contest_id,
    ROUND(COUNT(DISTINCT user_id)/(SELECT COUNT(*) FROM Users)*100,2) percentage
FROM
    Register
GROUP BY
    contest_id
ORDER BY
    percentage DESC,contest_id


相关文章
|
6月前
|
SQL 人工智能 关系型数据库
PostgreSQL 常用SQL(持续更新...)
PostgreSQL 常用SQL(持续更新...)
|
5月前
|
SQL PHP
thinkphp之进阶sql语法,持续更新
thinkphp之进阶sql语法,持续更新
29 0
SQL语法题合集(持续更新)
SQL语法题合集(持续更新)
|
SQL 网络安全
【网络安全】——sql注入之奇淫巧技bypass(持续更新中)
SQL注入bypass一直是个技术活,技巧也非常多,但有些技巧不是一直都好用的,所以写下这篇博客来记录我自己认为的平时比较好用的bypass技巧,都是经过了实战渗透检测的,目前内容较少,会实时更新,建议收藏
200 0
【网络安全】——sql注入之奇淫巧技bypass(持续更新中)
|
SQL 关系型数据库 MySQL
mysql慢sql优化(持续更新)
mysql慢sql优化(持续更新)
123 0
mysql慢sql优化(持续更新)
|
SQL 关系型数据库 MySQL
SQL语句小tips(持续更新)
统计非法数据 判断people_id是否是32为字母组成的,统计不满足要求的数据 SELECT COUNT(IF(BINARY people_id NOT REGEXP '^[0-9a-z]{32}',TRUE,NULL)) AS people_id_illegality_cnt FROM ...
1080 0
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
98 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
58 6