Это следующее решение является наиболее компактным, я мог бы придумать, что это O (n).
public static IEnumerable<T[]> Chunk<T>(IEnumerable<T> source, int chunksize)
{
var list = source as IList<T> ?? source.ToList();
for (int start = 0; start < list.Count; start += chunksize)
{
T[] chunk = new T[Math.Min(chunksize, list.Count - start)];
for (int i = 0; i < chunk.Length; i++)
chunk[i] = list[start + i];
yield return chunk;
}
}
Да. Возможно :D
SELECT SUM(totalHours) totalHours
FROM
(
select sum(hours) totalHours from resource
UNION ALL
select sum(hours) totalHours from projects-time
) s
В качестве побочного элемента, имя_таблицы projects-time
должно быть разграничено, чтобы избежать синтаксической ошибки. Символы разделителя различаются по используемой СУБД.
UNION ALL
один раз, агрегировать один раз:
SELECT sum(hours) AS total_hours
FROM (
SELECT hours FROM resource
UNION ALL
SELECT hours FROM "projects-time" -- illegal name without quotes in most RDBMS
) x
Если вы хотите использовать несколько операций
select (sel1.s1+sel2+s2)
(select sum(hours) s1 from resource) sel1
join
(select sum(hours) s2 from projects-time)sel2
on sel1.s1=sel2.s2
Что-то простое, подобное этому, может быть выполнено с помощью подзапросов в предложении select
:
select ((select sum(hours) from resource) +
(select sum(hours) from projects-time)
) as totalHours
Для такого простого запроса, как этот, такой подзапрос является разумным.
В некоторых базах данных вам может потребоваться добавить from dual
для компиляции запроса.
Если вы хотите выводить каждый отдельно:
select (select sum(hours) from resource) as ResourceHours,
(select sum(hours) from projects-time) as ProjectHours
Если вы хотите, чтобы оба и сумма, подзапрос удобен:
select ResourceHours, ProjectHours, (ResourceHours+ProjecctHours) as TotalHours
from (select (select sum(hours) from resource) as ResourceHours,
(select sum(hours) from projects-time) as ProjectHours
) t
Повторить для множественных агрегаций, таких как SELECT sum (AMOUNT) AS TOTAL_AMOUNT FROM (SELECT AMOUNT FROM table_1 UNION ALL SELECT AMOUNT FROM table_2 UNION ALL SELECT ASSURED_SUM FROM table_3 ....)
:D
– John Woo 1 March 2013 в 05:13ALIAS
подзапроса. кстати, What RDBMS , который вы используете?RDBMS
означает Система управления реляционными базами данных i>.RDBMS is the basis for SQL
, а также для всех современных систем баз данных, таких как MS SQL Server, IBM DB2, Oracle, MySQL и т. д. ... – John Woo 1 March 2013 в 05:15