交叉表查询

简单交叉表查询

      如果对于统计的项数是已知的,或着说个数不多,容易枚举的,举例如下:

  

 

 

 

 

如果对于统计的项数是未知的,或者项数很多,难于枚举的,则使用以上方法无法满足要求
为什么??
   解决方案
     1) 使用外部程序对数据进行统计分析
     2) 使用存储过程,动态生成交叉表查询语句,并借助临时表来存储统计结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
交叉查询,也称为交叉查询或者透视查询,是指在MySQL中对两个或多个进行联合查询,并将查询结果以交叉的形式展示出来的操作。 下面是一个简单的例子,假设我们有两个:学生和课程,它们的结构如下: 学生(students): | id | name | |----|-------| | 1 | Alice | | 2 | Bob | | 3 | Carol | 课程(courses): | id | course | score | |----|------------|-------| | 1 | Math | 90 | | 1 | English | 85 | | 2 | Math | 80 | | 2 | Physics | 95 | | 3 | Chemistry | 70 | | 3 | Geography | 75 | 现在我们想要得到每个学生的成绩情况,可以使用如下的交叉查询语句: ``` SELECT students.name, SUM(CASE WHEN courses.course = 'Math' THEN courses.score ELSE 0 END) AS Math, SUM(CASE WHEN courses.course = 'English' THEN courses.score ELSE 0 END) AS English, SUM(CASE WHEN courses.course = 'Physics' THEN courses.score ELSE 0 END) AS Physics, SUM(CASE WHEN courses.course = 'Chemistry' THEN courses.score ELSE 0 END) AS Chemistry, SUM(CASE WHEN courses.course = 'Geography' THEN courses.score ELSE 0 END) AS Geography FROM students LEFT JOIN courses ON students.id = courses.id GROUP BY students.name; ``` 这条语句的作用是将学生和课程进行左连接,然后使用CASE WHEN语句对每个学生的成绩情况进行统计,并以学生名字为分组条件进行聚合。最终的查询结果如下: | name | Math | English | Physics | Chemistry | Geography | |-------|------|---------|---------|-----------|-----------| | Alice | 90 | 85 | 0 | 0 | 0 | | Bob | 80 | 0 | 95 | 0 | 0 | | Carol | 0 | 0 | 0 | 70 | 75 | 以上就是一个简单的MySQL交叉查询的例子,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

边缘元素

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值