gpt4 book ai didi

mysql - 在 SELECT 查询中提取数据

转载 作者:行者123 更新时间:2023-11-29 11:03:20 25 4
gpt4 key购买 nike

是否可以通过从表中提取数据来查询以获取表的行?

这是我的 table :

leave_count_id  leave_count     leave_user_id   leave_id        leave_earned
1 0.0 1 1 15.000
2 0.0 1 2 15.000
3 2.5 2 1 15.000
4 0.0 2 2 15.000
5 2.0 3 1 15.000
6 1.0 3 2 15.000
7 2.0 4 1 15.000
8 1.0 4 2 15.000

这就是我想要得到的:

leave_user_id   sickLeave   vacationLeave
1 0 0
2 0 2.5
3 1 2
4 1 2

我的sql代码是这样的:

SELECT leave_user_id, slCount, vlCount

FROM (
SELECT
(SELECT leave_count FROM tbl_leave_count lc WHERE leave_id = 1 and lc.leave_user_id = leave_user_id) as vlCount,
(SELECT leave_count FROM tbl_leave_count lc WHERE leave_id = 2 and lc.leave_user_id = leave_user_id) as slCount,
FROM
tbl_leave_count

WHERE lc.leave_user_id = leave_user_id
) T

但是有错误。我不知道该怎么办。有人可以帮助我吗?

最佳答案

假设每个用户都有一个病假条目和一个假期条目,并且没有其他条目,则以下简单的数据透视查询应该有效:

SELECT leave_user_id,
MAX(CASE WHEN leave_id = 2 THEN leave_count END) AS sickLeave,
MAX(CASE WHEN leave_id = 1 THEN leave_count END) AS vacationLeave
FROM tbl_leave_count
GROUP BY leave_user_id

数据透视查询在对记录进行分组时使用了一种技巧。在上述查询的情况下计算病假时,对于每个 leave_user_id 记录组,它采用 leave_count 列中的最大值。只有两条记录,因此有两个值。一个值是我们想要在结果集中出现的数字,另一个值是NULLMAX() 函数忽略空值,因此我们只留下我们真正想要的数据。

如果用户可以有多个病假和休假记录,那么您可以尝试以下方法:

SELECT leave_user_id,
SUM(CASE WHEN leave_id = 2 THEN leave_count ELSE 0 END) AS sickLeave,
SUM(CASE WHEN leave_id = 1 THEN leave_count ELSE 0 END) AS vacationLeave
FROM tbl_leave_count
GROUP BY leave_user_id

关于mysql - 在 SELECT 查询中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41843927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com