1

データベースからデータを取得する方法を知りたいので、2つの列があります。これは私が達成したいことの例です:

EMPLOYEE_Total | YEAR_HIRED
----------------------------
5                  1995

(特定の年に雇用された従業員の数)

残念ながら、結果として1年に1行しか取得できないという問題が発生しました。

ここに画像の説明を入力してください

これが私の質問です。手伝ってくれませんか?どうも。!

 SELECT COUNT(EMPLOYEE_ID) AS EMPLOYEE_TOTAL, TO_CHAR(HIRE_DATE, 'YYYY') AS YEAR_HIRED 
 FROM EMPLOYEES
 WHERE hire_date 
 BETWEEN '01-JAN-1995' AND '31-DEC-1998'
 GROUP BY HIRE_DATE
 ORDER BY HIRE_DATE
4

3 に答える 3

1

既存のOracleテーブルの例-テスト済み:

SELECT count(*), to_char(hiredate, 'YYYY') hiredate 
  FROM scott.emp
 WHERE hiredate BETWEEN '01-JAN-1980' AND '01-JAN-1983'
GROUP BY to_char(hiredate, 'YYYY')
ORDER BY to_char(hiredate, 'YYYY')
/

出力:ORA-01481:数値形式モデルが無効です

これは機能し、次のどの順序でも同じ結果になります。

SELECT count(*), to_char(hiredate, 'YYYY') hiredate 
  FROM scott.emp
 WHERE hiredate BETWEEN '01-JAN-1980' AND '01-JAN-1983'
GROUP BY to_char(hiredate, 'YYYY')
--ORDER BY to_date(hiredate, 'YYYY')
-- ORDER BY hiredate
 ORDER BY 2
/

COUNT(*)    HIREDATE
-----------------------
1          1980
10         1981
1          1982
于 2013-02-25T21:55:51.337 に答える
1

あなたはあなたとを変更しgroup byたいorder by

 SELECT COUNT(EMPLOYEE_ID) AS EMPLOYEE_TOTAL, TO_CHAR(HIRE_DATE, 'YYYY') AS YEAR_HIRED 
 FROM EMPLOYEES
 WHERE hire_date 
 BETWEEN '01-JAN-1995' AND '31-DEC-1998'
 GROUP BY to_char(HIRE_DATE, 'YYYY')
 ORDER BY to_char(HIRE_DATE, 'YYYY')

アート、以下の作品:

with emp as (select sysdate - 31*365 as hiredate from dual)
SELECT count(*), to_char(hiredate, 'YYYY') hiredate 
  FROM emp
 WHERE hiredate BETWEEN '01-JAN-1980' AND '01-JAN-1983'
GROUP BY to_char(hiredate, 'YYYY')
ORDER BY to_char(hiredate, 'YYYY')

SQLFiddleで確認できます。

于 2013-02-25T21:26:55.117 に答える
1

現在のクエリは、実際に必要なものに非常に近いものです。GROUP BYを使用するように変更する必要がありますTO_CHAR(HIRE_DATE, 'YYYY')。これにより、grouping to be by year instead of the月、年などを含むhire_date`が発生します。

SELECT COUNT(EMPLOYEE_ID) AS EMPLOYEE_TOTAL, 
  TO_CHAR(HIRE_DATE, 'YYYY') AS YEAR_HIRED 
FROM EMPLOYEES
WHERE hire_date BETWEEN '01-JAN-1995' AND '31-DEC-1998'
GROUP BY TO_CHAR(HIRE_DATE, 'YYYY')
ORDER BY YEAR_HIRED
于 2013-02-25T21:27:32.827 に答える