8个必知必会的SQL小技巧!
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
这次给大家带来8个必知必会的SQL小技巧,包括窗口函数、子查询、通用表格表达式等等,一起来看看吧! 1. 窗口函数(Window Functions) 窗口函数在分析和汇总数据时非常有用。下面例子展示如何计算每个类别的销售额排名: SELECT category, product_name, sales, RANK() OVER (PARTITION BY category ORDER BY sales DESC) as sales_rankFROM products; 2. 子查询(Subqueries) 子查询可以嵌套在主查询中,增强查询的灵活性。以下是一个使用子查询查找平均销售额的示例: SELECT product_name, salesFROM productsWHERE sales > (SELECT AVG(sales) FROM products); 不过要慎用,影响查询性能。 3. 通用表格表达式(CTE) 通用表格表达式(CTE)可用于更清晰、模块化地构建复杂的查询。以下是一个使用CTE找出销售额最高的产品的示例: WITH ranked_products AS (SELECT product_name, sales, RANK() OVER (ORDER BY sales DESC) as sales_rank FROM products)SELECT product_name, salesFROM ranked_productsWHERE sales_rank = 1; 4. 联结表格(JOIN) 使用联结是优化查询的重要手段之一。以下例子展示了如何使用INNER JOIN联结两个表格: SELECT orders.order_id, customers.customer_nameFROM ordersINNER JOIN customers ON orders.customer_id = customers.customer_id; 除了INNER JOIN,还有LEFT JOIN、FULL JOIN、SEMI JOIN、ANTI JOIN等等。后两个如何使用,可以查看下方链接哦。 SQL | left semi join与left anti join 5. 条件聚合(Conditional Aggregation) 通过条件聚合,你可以在聚合函数中使用条件语句。以下例子演示如何计算不同产品类别的平均销售额,但仅考虑销售额大于1000的记录: SELECT category, AVG(CASE WHEN sales > 1000 THEN sales ELSE NULL END) as avg_salesFROM productsGROUP BY category; 6. 窜升(Pivoting) 也叫数据透视。使用PIVOT关键字,你可以将行数据转换为列。下面展示了如何将销售额按月份进行窜升: SELECT *FROM (SELECT month, category, sales FROM monthly_sales) AS source_tablePIVOT (SUM(sales) FOR month IN ('Jan', 'Feb', 'Mar')) AS pivot_table; 7. 日期和时间处理 处理日期和时间数据时,以下是一个计算一周内订单数量的例子: SELECT DATE_TRUNC('week', order_date) AS week_start, COUNT(*) AS order_countFROM ordersWHERE order_date >= CURRENT_DATE - INTERVAL '1 week'GROUP BY week_start; 8. 合并数据(UNION) 使用UNION操作符,你可以合并多个查询结果。下面例子展示了如何合并两个类别的产品销售信息: SELECT product_name, salesFROM products_1WHERE category = 'Electronics'UNIONSELECT product_name, salesFROM products_2WHERE category = 'Appliances'; 不过,UNION慎用,它自带去重功能。在不需要去重时,可以考虑用UNION ALL。 该文章在 2024/1/31 12:32:04 编辑过 |
关键字查询
相关文章
|