mysql - 从一个月的 1-15 和 16-31 中选择总和
问题描述
SELECT
(SELECT
SUM(total)
FROM `earnings`
WHERE user_id = $userid
AND DATE_FORMAT(date_earn, ('%m')) = '11'
AND DATE_FORMAT(date_earn, ('%Y')) = '2020'
AND DATE_FORMAT(date_earn, ('%d')) <= '15')
as first,
(SELECT
SUM(total)
FROM `eearnings`
WHERE user_id = $userid
AND DATE_FORMAT(date_earn, ('%m')) = '11'
AND DATE_FORMAT(date_earn, ('%Y')) = '2020'
AND DATE_FORMAT(date_earn, ('%d')) >= '16')
as second
FROM `earnings`
我想做的是每个用户ID每个月都可以访问1-15和16-30的收入总和..
在我的结果中……通过这个查询,我得到了 100 多条具有相同值的记录……例如:
first : 150 second: 300
如果我使用限制 1 ..查询只显示一条具有正确值的记录..我的问题是我的查询是好的还是我不匹配的东西,因为如果我运行每个查询分隔它只返回一行没有限制 1。谢谢寻求帮助!
解决方案
你有SELECT ... FROM earnings
. 这为您在收益表中的每一行提供一个结果行。对于这些行中的每一行,您选择两个总和。一次又一次的相同的两个总和。如果您只是删除 final FROM earnings
,这将告诉 DBMS 您只想要一行。
如前所述,还有其他方法可以编写此查询。我就是这样做的:
SELECT
SUM( CASE WHEN DAYOFMONTH(date_earn) <= 15 THEN total END ) as first,
SUM( CASE WHEN DAYOFMONTH(date_earn) >= 16 THEN total END ) as second
FROM earnings
WHERE user_id = $userid
AND date_earn >= DATE '2020-11-01'
AND date_earn < DATE '2020-12-01';
推荐阅读
- visual-studio - Visual Studio 安装问题
- php - 使用 jquery-Ajax 在 html 表中显示 laravel 重新运行结果
- python - 将 Python NumPy 数组插入 PostgreSQL 数据库的最佳方法
- angular - Angular 8无法匹配延迟加载模块的辅助(命名)出口上的任何路由
- openvpn - OpenVPN 用户证书
- c++ - 使用 h264 流创建 mkv 容器时数据无效,因为 extradata 为空
- corda - Corda 性能滞后于大容量交易
- express - App Engine Google Cloud 中的部署失败
- python - UnboundLocalError:分配前引用的局部变量“csv_file”
- react-router - React-router-dom:非常简单的嵌套路由不起作用