在写测试数据的时候,为了获取符合某些特定要求的记录,必须过滤掉记录较低的数量并获取物料总数。
SELECT *, SUM(数量) as 总数量, count(物料号) as 物料条数 from 物料详表
WHERE 仓库ID = '1'
and `物料状态` = 1
GROUP BY 物料号
HAVING count(物料条数) > 2
如上所示,首先利用 GROUP BY 物料号,以物料号作为聚合的标准。
SUM(数量) as 总数量 是指,每一条记录都有对应的物料数量,将同物料号的数量一起加起来就是物料的总数量。
count(物料号) as 物料条数 是指,表中每含有一条这个物料号的记录,物料条数就会+1;
HAVING count(物料条数) > 2 是过滤掉所有物料条数小于2的物料。
在写测试数据的时候,为了获取符合某些特定要求的记录,必须过滤掉记录较低的数量并获取物料总数。SELECT *, SUM(数量) as 总数量, count(物料号) as 物料条数 from 物料详表WHERE 仓库ID = '1' and `物料状态` = 1 GROUP BY 物料号HAVING count(物料条数) > 2如上所示,首先利用 GR...
在mysql中查询5条不重复的数据,使用以下:
代码如下:SELECT * FROM `table` ORDER BY RAND() LIMIT 5
就可以了。但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据。
代码如下:SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2 WHERE t1.id >= t2.id ORDER
针对于需要先截取字符串,再根据截取字符串进行group by ,并且取记录数
大于2的,再用
having count(*)
业务场景是这样的,要求查询user_name的前两位相同的并且记录
条数
大于二的记录
SELECT *,LEFT(user_name,2) FROM USER GROUP BY LEFT(user_name,2)
HAVING COUNT(*) > 1
having 作用类似于where,差别是where过滤行,
having过滤组使用顺序:where、
having、group by、order by、limit exm: SELECT
FROM t_order
WHERE STATUS = 6
GROUP BY user_id
1、SQL除了能用Group By分组数据之外,SQL还允许过滤分组,规定包括那些分组,排除那些分组。例如,你可能想要列出至少有两个订单的所有顾客。为此,必须基于完整的分组而不是个别的行进行过滤。
基于上面的例子,我们第一时间想到的是通过使用WHERE来过滤数据,拿到我们想要的结果,但是在这个列子中WHERE不能完成任务,因为WHERE过滤指定的是行,而不是分组。事实上,WHERE没有分...
HAVING语句与 WHERE 语句都是
条件筛选语句,他们的作用都一样,写法也都相同
WHERE 语句后面的比较运算符、IN、BETWEEN、 LIKE等在
HAVING 中都是可以使用的
他们本质上的区别是:
val df = spark.read.format("com.mongodb.spark.sql.DefaultSource")
.option("uri", "mongodb://localhost/test.coll")
.load()
df.createOrReplaceTempView("data")
val result = spark.sql("SELECT COUNT(*) FROM data WHERE age > 20")
result.show()
3. 最后,将结果保存到
MySQL中,可以使用以下代码:
result.write.format("jdbc")
.option("url", "jdbc:
mysql://localhost:3306/test")
.option("dbtable", "result")
.option("user", "root")
.option("password", "password")
.save()
其中,url、dbtable、user和password需要根据实际情况进行修改。
以上就是使用Spark SQL连接MongoDB,对
数据进行
统计分析,并将结果保存到
MySQL中的步骤。