php - 如何 "SUM"唯一列值并按日期过滤

标签 php mysql

<分区>

输入

+------------+----------+-----------+-------+-------------+
|     cardNo | userName | tablename | hours |    date     |
+------------+----------+-----------+-------+-------------+
|          1 | a        | a         |    12 | 12-06-2015  |
|          1 | a        | a         |     5 | 11-06-2015  |
|          2 | b        | b         |     3 | 15-06-2015  |
|          1 | a        | a         |     8 | 12-06-2015  |
|          2 | b        | b         |     3 | 21-06-2015  |
|          1 | a        | a         |    12 | 14-06-2015  |
|          2 | b        | b         |    10 | 8-06-2015   |
+------------+----------+-----------+-------+-------------+

cardNo 是唯一的。我需要显示每张卡片的所有详细信息和总小时数,例如:

期望的输出

+--------+----------+-----------+-------------+
| cardNo | userName | tablename | totalhours  |
+--------+----------+-----------+-------------+
|      1 | a        | a         |         37  |
|      2 | b        | b         |         16  |
+--------+----------+-----------+-------------+

我的查询

SELECT cardNo,sum(hours) 
FROM yourtable
GROUP BY cardNo;

但我需要 totalHours >=20 是 'N'。

SELECT cardNo,sum(hours) 
FROM yourtable where totalHours>=20
GROUP BY cardNo;

我无法得到正确答案。如果我指定 totalHours>=1 它会给出正确答案;我能做些什么?而且我还需要用于该查询的 PHP 获取代码。

最佳答案

使用HAVING子句:

SELECT cardNo,sum(hours) as TotalHours
FROM yourtable
WHERE date  BETWEEN fromdate AND todate
GROUP BY cardNo
HAVING sum(hours) >=20

使用 WHERE 子句,您可以获得这些日期之间每个 cardNo 的总小时数。

关于php - 如何 "SUM"唯一列值并按日期过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32476642/

相关文章:

javascript - Google 可视化 PHP 和 Javascript

php - 检查 Azure Blob 存储中是否存在 Blob (php)

javascript - 从用户那里收集数据,通过 PHP 传递并在 SQL 查询中使用

javascript - Prestashop - 如何添加内联脚本?

php - 我应该使用 phpmyadmin 还是 php 将内容添加到数据库?

mysql - 如何计算特定字段SQL中的特定字符

sql - #1111 - 组函数的使用无效

mysql - 如何从 rails env 检查 mysql 数据库存在的位置?

mysql - 转储 mysql 的更快方法

mysql - vb.net在字段中使用逗号将错误插入mysql