我有一张表,可以根据值存储每天用户是否工作或休假。
示例表,Value = 1 -> WorkDay, Value = 2 -> Vacation
:
User | Day | Value
--------|------------|-------
user-1 | 2021-01-01 | 1
user-1 | 2021-01-02 | 1
user-1 | 2021-01-03 | 1
user-1 | 2021-01-04 | 1
user-1 | 2021-01-05 | 2
user-1 | 2021-01-06 | 2
...
我想把这个表转换成这个(使用上面的简单例子):
User | Year | Month | WorkDay | Vacation
--------|------|-------|---------|---------
user-1 | 2021 | 01 | 4 | 2
...
我尝试使用 group by、子查询和 case,但整个过程变得一团糟。
SELECT
YEAR(Day),
MONTH(DAY),
User,
...
From Table1
Group By YEAR(Day), MONTH(DAY), User
答案 0 :(得分:1)
只需使用条件聚合:
gcloud pubsub subscriptions create supervisor-subscription \
--topic supervisor-cron \
--push-endpoint=$(gcloud run services describe supervisor --format 'value(status.url)' --platform managed --project ${PROJECT_ID}) \
--push-auth-service-account=cloud-run-pubsub-invoker@${PROJECT_ID}.iam.gserviceaccount.com
答案 1 :(得分:1)
您可以使用如下条件聚合:
window.addEventListener("scroll", (e) => {
let sat = document.querySelector(".hero-images--sat");
let scrolled = window.pageYOffset;
const images = document.querySelectorAll(".hero-image");
if ((scrolled += 25)) {
sat.classList.add("appear");
}
for (let i = 0; i < images.length; i++) {
let pos = scrolled * images[i].dataset.rate;
if (images[i].classList.contains("hero-images--earth")) {
let pos = scrolled * images[i].dataset.rate - 48.75;
images[i].style.transform = `translate3d(-50%, ${pos}%, 0px)`;
} else {
images[i].style.transform = `translate3d(0%, ${pos}%, 0px)`;
}
}
});
.appear {
opacity: 1;
transition: all 0.3s linear;
top: 50%;
}
DB-小提琴:
架构和插入语句:
select User,
year(day),
month(day),
sum(case when value = 1 then 1 else 0 end) as WorkDay,
sum(case when value = 2 then 1 else 0 end) as Vacation
from table1
group by User, year(day), month(day)
查询:
create table table1([User] varchar(50), Day date, Value int);
insert into table1 values('user-1' , '2021-01-01' , 1);
insert into table1 values('user-1' , '2021-01-02' , 1);
insert into table1 values('user-1' , '2021-01-03' , 1);
insert into table1 values('user-1' , '2021-01-04' , 1);
insert into table1 values('user-1' , '2021-01-05' , 2);
insert into table1 values('user-1' , '2021-01-06' , 2);
输出:
用户 | 年 | 月 | 工作日 | 假期 |
---|---|---|---|---|
user-1 | 2021 | 1 | 4 | 2 |
db