У меня есть таблица с тремя столбцами (a, b, c), мне нужно создать новый столбец «d», используя отличительные особенности столбцов a и b.
a b c
1 p 2
1 p 3
2 q 4
1 q 2
2 r 4
2 r 2
1 p 2
Мне нужен ответ, как показано ниже, где d - это сумма уникального столбца a и b
a b c d
1 p 2 7
1 p 3 7
2 q 4 4
1 q 2 2
2 r 4 6
2 r 2 6
1 p 2 7
Результат столбца d:
для различных (a и b), затем сложите значения c. А затем вставьте значения в столбец d (совпадающие с различными значениями)
И объясните логику вывода, например, как 1 + p = 7?






используйте case when и создайте другой столбец, если сгенерированное значение является постоянным
select a,b,c, case when a=1 and b='p' then 7
when a=2 and b='q' then 4
when a=2 and b='r' then 6
when a=1 and b='q' then 2 else '' end as d from
your_table
Но мне кажется, вам нужна групповая сумма a, b в качестве 4-го столбца d, поэтому вы можете сделать как показано ниже
select t1.a,t1.b,t1.c,t2.d from yourtable t1
inner join
(select a,b ,sum(c) as d from your table group by a,b) as t2
on t1.a=t2.a and t1.b=t2.b
Вы можете попробовать использовать столбцы SUM и group bya и b в подзапросе, а затем самостоятельно join
TestDLL
create table t(
a int,
b varchar(5),
c int
);
insert into t values (1,'p',2);
insert into t values (1,'p',3);
insert into t values (2,'q',4);
insert into t values (1,'q',2);
insert into t values (2,'r',4);
insert into t values (2,'r',2);
insert into t values (1,'p',2);
Запрос
SELECT t1.*,t2.d
FROM T t1 INNER JOIN (
SELECT a,b,SUM(c) d
FROM T
GROUP BY a,b
) t2 on t1.a = t2.a and t1.b=t2.b
[Полученные результаты]:
| a | b | c | d |
|---|---|---|---|
| 1 | p | 2 | 7 |
| 1 | p | 3 | 7 |
| 2 | q | 4 | 4 |
| 1 | q | 2 | 2 |
| 2 | r | 4 | 6 |
| 2 | r | 2 | 6 |
| 1 | p | 2 | 7 |
Большое вам спасибо, D-Shih .. Кроме того, могу ли я спросить, можно ли суммировать значения для интервала 2.
Какой у тебя interval of 2? Не могли бы вы привести мне пример? благодарить
Например: a b c d 1 p 2 5/1 p 3 5/1 p 4 6/1 p 2 6 / Что-то похожее на это. сложение значений с интервалом 2 для различных значений
Какая у вас база данных? sql-server или mysql или другое?
Мои базы данных - это mysql.
Если ваша версия mysql не поддерживает функцию Windows, это будет сложно сделать :(
В любом случае спасибо .. Я проверю другие возможности. :)
Если поддерживается оконная функция для SUM
select a, b, c, sum(c) over (partition by a, b) as d
from yourtable
Вы можете мне подробно объяснить. Я новичок в sql. Можно ли складывать значения с четким интервалом 2? Я использую mysql 5.7
@Sara Если вам это действительно нужно, с интервалом 2. Тогда я предлагаю задать еще один вопрос по нему. Это более сложное требование. Но на этот раз убедитесь, что вы пометили этот вопрос с помощью MySql. И укажите версию. Потому что вам не нужно что-то, что работает только в MySql 8.x.
Какой у тебя dbms