我有以下查询:
SELECT
Account,
Unit,
SUM(state_fee),
Code
FROM tblMta
WHERE MTA.Id = '123'
GROUP BY Account,Unit
Run Code Online (Sandbox Code Playgroud)
这当然会引发异常,因为代码不在group by条款中.每个state_fee都有一个代码.如何将此代码显示在1条记录中(每个state_fee 1个代码,即每个单元的多个state_fee)作为逗号分隔列表?我在这里查看了不同的解决方案,但我找不到任何有用的解决方案group by.
sql sql-server sql-server-2005 aggregate-functions sql-server-group-concat
我做不到:
>>> session.query(
func.count(distinct(Hit.ip_address, Hit.user_agent)).first()
TypeError: distinct() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
我可以:
session.query(
func.count(distinct(func.concat(Hit.ip_address, Hit.user_agent))).first()
Run Code Online (Sandbox Code Playgroud)
哪个没问题('pageload'db表中的唯一用户数).
这在一般情况下是不正确的,例如,对于下表,将给出1而不是2的计数:
col_a | col_b
----------------
xx | yy
xxy | y
Run Code Online (Sandbox Code Playgroud)
有没有办法生成以下SQL(至少在postgresql中有效)?
SELECT count(distinct (col_a, col_b)) FROM my_table;
Run Code Online (Sandbox Code Playgroud) 好吧,我可能想出一个更好的头衔,但不知道如何说出来让我解释一下.
假设我有一个包含"CODE"列的表格.我的表中的每条记录都有"A","B"或"C",因为它在"CODE"列中的值.我想要的是计算我有多少'A','B'和'C'.
我知道我可以用3个不同的查询完成这个,但我想知道是否有办法只用1来做到这一点.
使用此数据集:
Category | Amount
A | 5
A | 3
B | 6
B | 2
B | 1
C | 7
Run Code Online (Sandbox Code Playgroud)
我想在类别上创建一个tablix分组,显示总金额的百分比:
Category | Percentage
A | 33%
B | 38%
C | 29%
Run Code Online (Sandbox Code Playgroud)
这应该是一个简单的计算:
Category | Percentage
A | ((Sum of Amount within group / Sum of Amount across groups) * 100)%
B | ((Sum of Amount within group / Sum of Amount across groups) * 100)%
C | ((Sum of Amount within group / Sum of Amount …Run Code Online (Sandbox Code Playgroud) 我们在Java中有任何聚合器函数来执行以下聚合吗?
Person {
String name;
String subject;
String department;
Long mark1;
Long mark2;
Long mark3;
}
Run Code Online (Sandbox Code Playgroud)
列表包含如下数据.
Name |Subject |Department |Mark1 |Mark2 |Mark3 --------|-----------|-----------|-------|-------|----- Clark |English |DEP1 |7 |8 |6 Michel |English |DEP1 |6 |4 |7 Dave |Maths |DEP2 |3 |5 |6 Mario |Maths |DEP1 |9 |7 |8
聚合标准是Subject&Dep.结果对象需要
Subject |Department |Mark1 |Mark2 |Mark3 ----------- |-----------|-------|-------|----- English |DEP1 |13 |12 |13 Maths |DEP2 |3 |5 |6 Maths |DEP1 |9 |7 |8
可以通过手动迭代列表并创建聚合列表来实现此聚合.示例如下.
private static List<Person> getGrouped(List<Person> origList) {
Map<String, Person> …Run Code Online (Sandbox Code Playgroud) 我正在寻求对此的澄清.我在下面写两个问题:
我们有一个员工姓名表,列ID,姓名,薪水
1. Select name from employee
where sum(salary) > 1000 ;
2. Select name from employee
where substring_index(name,' ',1) = 'nishant' ;
Run Code Online (Sandbox Code Playgroud)
查询1不起作用,但查询2确实有效.根据我的开发经验,我觉得可能的解释是:
sum()适用于参数中指定的一组值.这里'salary'列被传递,因此它必须将此列的所有值相加.但是在where子句中,记录是逐个检查的,就像检查第一个记录1一样,等等.因此,sum(salary)将不会被计算,因为它需要访问所有列值,然后只返回一个值.
查询2作为substring_index()工作在单个值上,因此它在提供给它的值上工作.
你能否证实我的理解.
我正在创建一个SQL查询,它将根据两个聚合函数的值从表中提取记录.这些聚合函数从同一个表中提取数据,但具有不同的过滤条件.我遇到的问题是SUM的结果比我只包含一个SUM函数要大得多.我知道我可以使用临时表创建此查询,但我只是想知道是否有一个只需要一个查询的优雅解决方案.
我已经创建了一个简化版本来演示这个问题.这是表结构:
EMPLOYEE TABLE
EMPID
1
2
3
ABSENCE TABLE
EMPID DATE HOURS_ABSENT
1 6/1/2009 3
1 9/1/2009 1
2 3/1/2010 2
Run Code Online (Sandbox Code Playgroud)
这是查询:
SELECT
E.EMPID
,SUM(ATOTAL.HOURS_ABSENT) AS ABSENT_TOTAL
,SUM(AYEAR.HOURS_ABSENT) AS ABSENT_YEAR
FROM
EMPLOYEE E
INNER JOIN ABSENCE ATOTAL ON
ATOTAL.EMPID = E.EMPID
INNER JOIN ABSENCE AYEAR ON
AYEAR.EMPID = E.EMPID
WHERE
AYEAR.DATE > '1/1/2010'
GROUP BY
E.EMPID
HAVING
SUM(ATOTAL.HOURS_ABSENT) > 10
OR SUM(AYEAR.HOURS_ABSENT) > 3
Run Code Online (Sandbox Code Playgroud)
任何见解将不胜感激.
我有两个基本查询,我需要总结:
Select hours, sum(hours) FROM table WHERE name='xxx' and Description='Worked'
Select hours2, sum(hours2) FROM table WHERE name='xxx' and Description2='Worked'
Run Code Online (Sandbox Code Playgroud)
我已经尝试了UNION,它会得到每个查询的总数,但它不会合并它们.
表格设置是:
我需要将小时与描述和小时2关联到description2,这就是为什么我有两个不同的查询.我需要总计小时和小时2的总和.
除了问题如何通过'查询连接PostgreSQL'组中的字符串字段的字符串?
如何按降序对员工进行排序?
我正在使用不支持的PostgreSQL 8.4 string_agg().我试过使用以下内容,但不支持:
array_to_string(array_agg(employee ORDER BY employee DESC), ',')
Run Code Online (Sandbox Code Playgroud)
我很欣赏任何正确答案的暗示.
Aggregate当用作具有多个Into子句的Linq表达式的第一个(外部)子句时,VB.NET的查询是否存在致命缺陷,因为每个Into子句是单独执行的?
SELECT MIN(ZoneMin), MAX(ZoneMin) FROM PlantLINQ to SQL中的"明显"答案是
Dim limits = Aggregate p In Plants Select p.ZoneMin Into Min(), Max()
Run Code Online (Sandbox Code Playgroud)
但是,这个答案实际上在单独的 SQL查询中检索每个Min和Max(以及如果包括其他聚合函数,如Count和Average).这可以在LINQPad中轻松看到.
是否存在LINQPad未显示的事务(或其他使这些查询成为原子的事件),或者这是一种等待发生的竞争条件?(因此,您必须执行上述问题的答案中显示的技巧,以强制返回多个聚合的单个查询.)
总之,是否使用LINQ-to-SQL查询Aggregate在单个(或至少"原子")查询中返回多个聚合函数?
(我也说"显而易见",因为对我来说显而易见的答案Aggregate p In Plants Into Min(p.ZoneMin), Max(p.ZoneMin),实际上检索了整个表两次,即使在优化后,然后使用Linq-to-Entities Min并Max获得结果:-()
sql ×6
oracle ×2
postgresql ×2
sql-server ×2
aggregate ×1
count ×1
distinct ×1
group-by ×1
java ×1
java-8 ×1
java-stream ×1
linq ×1
linq-to-sql ×1
mysql ×1
sqlalchemy ×1
t-sql ×1
vb.net ×1