MySQL根据某个字段值统计总数并按照大小排序结果

GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。

某个员工信息表结构和数据如下:

例如,我想列出每个部门最高薪水的结果,sql语句如下:

查询结果如下:

解释一下这个结果:
1、满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有GROUP BY DEPT中包含的列DEPT。
2、“列函数对于GROUP BY子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
例如,查询每个部门的总的薪水数:

查询结果如下:

将 WHERE 子句与 GROUP BY 子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。
例如,查询公司2010年入职的各个部门每个级别里的最高薪水

查询结果如下:

注意:在SELECT语句中指定的每个列名也在GROUP BY子句中提到。未在这两个地方提到的列名将产生错误。

GROUP BY子句对DEPT和EDLEVEL的每个唯一组合各返回一行
在GROUP BY子句之后使用HAVING子句可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY子句后面包含一个HAVING子句。HAVING子句可包含一个或多个用AND和OR连接的谓词。每个谓词将组特性(如AVG(SALARY))与下列之一进行比较:
例如:寻找雇员数超过2个的部门的最高和最低薪水:

查询结果如下:

例如:寻找雇员平均工资大于3000的部门的最高和最低薪水:

查询结果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是使用Spark SQL编程实现统计各个月份共享单车使用的总数,并将结果保存在MySQL中的代码: ```python from pyspark.sql import SparkSession # 创建SparkSession对象 spark = SparkSession.builder.appName("BikeSharing").getOrCreate() # 读取train.csv文件并创建DataFrame对象 data = spark.read.format("csv").option("header", "true").load("hdfs://localhost:9000/exam/学号/train.csv") # 将datetime字段转换为月份,并将count字段转换为整型 data = data.withColumn("month", data["datetime"].substr(6, 2).cast("int")).withColumn("count", data["count"].cast("int")) # 使用Spark SQL进行统计 data.createOrReplaceTempView("bike_sharing") result = spark.sql("SELECT month, SUM(count) AS total_count FROM bike_sharing GROUP BY month ORDER BY total_count DESC") # 将结果保存到MySQL中 result.write.format("jdbc").option("url", "jdbc:mysql://localhost:3306/database_name").option("dbtable", "table_name").option("user", "username").option("password", "password").save(mode="overwrite") # 关闭SparkSession对象 spark.stop() ``` 解释一下代码: 首先,我们创建了一个SparkSession对象。然后,使用`read()`方法读取train.csv文件,并创建DataFrame对象。 接下来,我们使用`withColumn()`方法将datetime字段转换为月份,并将count字段转换为整型。这里使用了Spark SQL的函数和表达式来进行转换。 然后,我们使用`createOrReplaceTempView()`方法将DataFrame对象注册为一个临时表,以便使用Spark SQL进行统计。在SQL语句中,我们使用`GROUP BY`和`ORDER BY`子句来对数据进行分组和排序。 最后,我们使用`write()`方法将结果保存到MySQL中。需要注意的是,我们需要将MySQL的URL、表名、用户名和密码等信息填写到代码中。在这里,我们假设MySQL的数据库名为`database_name`,表名为`table_name`,用户名为`username`,密码为`password`。如果您的信息不同,请相应地修改代码。 注意:在代码中,我们假设train.csv文件已经上传到了HDFS的`/exam/学号`目录中。如果您的文件上传路径不同,请相应地修改代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值