【问题标题】:How to count employee readings in current month如何计算当月员工的阅读量
【发布时间】:2012-10-26 07:27:54
【问题描述】:

我正在研究如何为我的数据库制作此视图

每个仪表在当月读取的仪表数 读者(这个视图应该可以随时使用,而不必 更改以适应日期)。

我遇到的主要问题是计算员工在一个月内读了多少次电表。我正在使用 oracle 和 sql developer。

这些是我的桌子:

a2_METERREADER

 - EMPLOYEEID
 - FIRSTNAME
 - LASTNAME

a2_READING

 - READINGID
 - METERID
 - EMPLOYEEID
 - BILLNUMBER
 - READING
 - DATERECORD

a2_Watermeter

 - METERID
 - ADDRESS
 - SUBURB
 - POSTCODE
 - STATUS
 - CUSTOMERID
 - REPLACE
 - INSTALLDATE

【问题讨论】:

  • 请添加一些数据:) 我的意思是表结构和示例记录。
  • 如果您需要更多信息,请告诉我

标签: sql oracle date view count


【解决方案1】:

您需要加入读表器和读表并计算行数,按相关月份的员工分组。

类似的东西:

SELECT reader.EMPLOYEEID, COUNT(reading.READINGID)
FROM a2_METERREADER reader, a2_READING reading
WHERE reader.EMPLOYEEID = reading.EMPLOYEEID
AND YEAR(reading.DATERECORD) = YEAR(SYSDATE)
AND MONTH(reading.DATERECORD) = MONTH(SYSDATE)
GROUP BY reader.EMPLOYEEID

【讨论】:

  • 我也需要关于问题日期方面的帮助,我无法阅读今天的月份
  • 谢谢,但是有没有办法从windows读取日期?
  • 是的,你可以。使用 SYSDATE,它可以为您提供来自 Windows 的当前日期。如果您只需要 EMPLOYEEID,我也看不到 JOIN 的原因。在下面查看我的答案,我相信它可以满足您的需求。更动态。
  • 是的,您可以像 pana 所说的那样使用 SYSDATE。此外,他对加入是正确的,前提是您只想显示员工 ID 而不是他们的姓名。
【解决方案2】:

如果您的日期记录是 DATE,那么要从 Windows 访问当前月份,您可以这样做。

SELECT EMPLOYEEID, COUNT(*)
FROM a2_READING
WHERE TO_CHAR(DATERECORD, 'MM/YYYY') = TO_CHAR(SYSDATE, 'MM/YYYY')
GROUP BY EMPLOYEEID

通过这种方式,您可以从 DATERECORD 中删除日期(仅保留月份和年份),并且它必须与 SYSDATE(当前日期)相同,再次转换为保留月份和年份。

如果只需要 ID,则不需要加入 METERREADER 表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    相关资源
    最近更新 更多