SQL 系列之 行转列
来源:互联网 发布:ppt书籍推荐 知乎 编辑:程序博客网 时间:2024/06/05 23:54
一共有三张表
t_goods 物品表 t_category 类别表 t_color 颜色表
结构如下:
问题1:查询 每个分类下的总数是多少
SELECT t.`name`,SUM(total) sum_total FROM t_goods g,t_category t WHERE g.type=t.id GROUP BY t.`name`;
每个分类下 肯定用到了分组,总数肯定用sum函数
问题2:查询 每个分类下平均数前2名的类别是哪些
SELECT c.`name`,AVG(total) avg_count FROM t_goods g,t_category c WHERE c.id=g.type GROUP BY type ORDER BY avg_count DESC LIMIT 2 ;
问题3:查询出每个分类下各个颜色下的总和
SELECT ss.tcName,MAX(CASE ss.cName WHEN'红色' THEN ss.total ELSE 0 END) AS '红色',MAX(CASE ss.cName WHEN'紫色' THEN ss.total ELSE 0 END) AS '紫色',MAX(CASE ss.cName WHEN'蓝色' THEN ss.total ELSE 0 END) AS '蓝色',MAX(CASE ss.cName WHEN'金色' THEN ss.total ELSE 0 END) AS '金色'FROM (SELECT t.`name` tcName,c.`name` cName,SUM(g.total) total,g.type,g.color FROM t_goods g,t_category t,t_color c WHERE g.type=t.id AND g.color=c.id GROUP BY g.type,g.color) ssgroup by ss.tcName
=======================================================================================================================
结果:1.
结果:2
结果:3
利用sql 查询出的结果1
SELECT ss.tcName, ss.cName,ss.total FROM (SELECT t.`name` tcName,c.`name` cName,SUM(g.total) total,g.type,g.color FROM t_goods g,t_category t,t_color c WHERE g.type=t.id AND g.color=c.id GROUP BY g.type,g.color) ss;
结果
进行行转列
后
阅读全文
0 0
- SQL 系列之 行转列
- SQL系列之基本操作
- Mybatis系列之动态SQL
- SQL系列教程之基本SELECT命令
- SQL系列教程之基本SELECT命令
- SQL Server Index系列之二
- Oracle数据库--SQL系列之基本指令
- T-SQL系列之附加数据库
- [MySQL SQL优化系列]之连接查询
- SQL Server系列之 删除大量数据
- SQL Server - 小鸟系列之全文搜索
- Flink-Table-SQL系列之source
- 数据库笔记系列之SQL会话
- 深入浅出SQL系列教程之SQL语言简介
- sql优化之:改善SQL语句(系列三)
- sql优化之:改善SQL语句(系列三)
- sql数据库学习系列一之SQL Server 数据库设计
- sql数据库学习系列六之SQL Server 存储过程
- string类型中find和find_first_of
- JavaScript数组
- 讯飞语音的使用(android studio)
- form
- Good Numbers
- SQL 系列之 行转列
- 集合操作
- LeetCode 107. Binary Tree Level Order Traversal II 树的BFS、DFS
- linux 下 jdk 安装教程
- C语言总结
- Java多线程-工具篇-BlockingQueue
- 两个有序数组A、B,长度分别为m、n,找到两个数组的第k个值并返回
- Picasso
- [leetcode]Reverse Linked List II