我遇到了MySQL的"GROUP_CONCAT"功能问题.我将使用一个简单的帮助台数据库来说明我的问题:
CREATE TABLE Tickets (
id INTEGER NOT NULL PRIMARY KEY,
requester_name VARCHAR(255) NOT NULL,
description TEXT NOT NULL);
CREATE TABLE Solutions (
id INTEGER NOT NULL PRIMARY KEY,
ticket_id INTEGER NOT NULL,
technician_name VARCHAR(255) NOT NULL,
solution TEXT NOT NULL,
FOREIGN KEY (ticket_id) REFERENCES Tickets.id);
INSERT INTO Tickets VALUES(1, 'John Doe', 'My computer is not booting.');
INSERT INTO Tickets VALUES(2, 'Jane Doe', 'My browser keeps crashing.');
INSERT INTO Solutions VALUES(1, 1, 'Technician A', 'I tried to solve this but …Run Code Online (Sandbox Code Playgroud) 我有这样一张桌子:
group_id name
-------- ----
1 David
1 John
1 Alan
1 David
2 Julie
2 Charles
Run Code Online (Sandbox Code Playgroud)
我想要以下结果:
group_id names
-------- -----
1 'Alan, David, John'
2 'Charles, Julie'
Run Code Online (Sandbox Code Playgroud)
我可以使用以下查询:
select group_id,
listagg(name, ',') within group (order by name) as names
from demotable
group by group_id
Run Code Online (Sandbox Code Playgroud)
为了得到这个(非常相似的结果):
group_id names
-------- -----
1 'Alan, David, David, John'
2 'Charles, Julie'
Run Code Online (Sandbox Code Playgroud)
我有什么想法可以通过LISTAGG呼叫中的唯一性过滤名称?
SQL Server中的标量值,表值和聚合函数有什么区别?从查询中调用它们需要一种不同的方法,还是以同样的方式调用它们?
假设我有这张桌子
id | cash
1 200
2 301
3 101
4 700
Run Code Online (Sandbox Code Playgroud)
我想要返回所有先前现金总和大于某个值的第一行:
因此,例如,如果我想要返回所有先前现金总和大于500的第一行,则应返回第3行
我如何使用mysql语句执行此操作?
使用WHERE SUM(cash) > 500
不起作用
这个sql代码抛出一个
WHERE中不允许使用聚合函数
SELECT o.ID , count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID
WHERE count(p.CAT) > 3
GROUP BY o.ID;
Run Code Online (Sandbox Code Playgroud)
我怎样才能避免这个错误?
我有这张桌子:
Movies (ID, Genre)
Run Code Online (Sandbox Code Playgroud)
电影可以有多种类型,因此ID不是特定于类型,它是多对多的关系.我想要一个查询来查找恰好有4种类型的电影总数.我当前的查询是
SELECT COUNT(*)
FROM Movies
GROUP BY ID
HAVING COUNT(Genre) = 4
Run Code Online (Sandbox Code Playgroud)
但是,这会返回一个4的列表而不是总和.如何获得总和而不是列表count(*)?
我有两个表,关键字和数据.
表关键字有2列(id,关键字),表数据有3列(id [keywords.id的外键],名称,值).
我正在使用此查询:
SELECT k.id, d.value, d.name
FROM keywords AS k
INNER JOIN data as d ON k.id = d.id
Run Code Online (Sandbox Code Playgroud)
它返回类似于:
1 123 name1
1 456 name2
2 943 name1
3 542 name1
3 532 name2
3 682 name3
Run Code Online (Sandbox Code Playgroud)
每个id可以具有0到3的值(将来可能更多).
如何在同一行中检索具有相同ID的所有行?
喜欢
1 123 456
2 943
3 542 532 682
Run Code Online (Sandbox Code Playgroud)
我想这样做是因为我希望能够对值进行排序.
在SQL Server 2008中,我有一个表CUSTOMERS,它有两列:
身份证,资产负债表
如何以最有效的方式编写选择具有最大余额的客户ID的查询?
选项1:ORDER BY BALANCE and SELECT TOP(1)- >成本太高.
选项2:首先Get MAX amount,然后进行另一个查询,使用where clause- >成本太多而且看起来不可靠.
我知道如何在Spark SQL中编写UDF:
def belowThreshold(power: Int): Boolean = {
return power < -40
}
sqlContext.udf.register("belowThreshold", belowThreshold _)
Run Code Online (Sandbox Code Playgroud)
我可以做类似的定义聚合函数吗?这是怎么做到的?
对于上下文,我想运行以下SQL查询:
val aggDF = sqlContext.sql("""SELECT span, belowThreshold(opticalReceivePower), timestamp
FROM ifDF
WHERE opticalReceivePower IS NOT null
GROUP BY span, timestamp
ORDER BY span""")
Run Code Online (Sandbox Code Playgroud)
它应该返回类似的东西
Row(span1, false, T0)
我希望聚合函数告诉我opticalReceivePower在定义的组中是否有任何值span,timestamp哪些值低于阈值.我是否需要以不同的方式将UDAF写入上面粘贴的UDF?
scala aggregate-functions user-defined-functions apache-spark apache-spark-sql
我一直在寻找,我无法aggregate在Scala中找到我能理解的函数的示例或讨论.它看起来非常强大.
可以使用此函数来减少元组的值以生成多图类型集合吗?例如:
val list = Seq(("one", "i"), ("two", "2"), ("two", "ii"), ("one", "1"), ("four", "iv"))
Run Code Online (Sandbox Code Playgroud)
应用聚合后:
Seq(("one" -> Seq("i","1")), ("two" -> Seq("2", "ii")), ("four" -> Seq("iv"))
Run Code Online (Sandbox Code Playgroud)
此外,您还可以给实例参数z,segop和combop?我不清楚这些参数是做什么的.
mysql ×5
sql ×4
group-by ×2
scala ×2
t-sql ×2
apache-spark ×1
function ×1
group-concat ×1
join ×1
oracle ×1
oracle11g ×1
sql-server ×1
sqlclr ×1