ホームページ  >  記事  >  バックエンド開発  >  SQL ステートメントでリング比を見つける方法!今月の履歴書から先月の履歴書を引いた数(写真)

SQL ステートメントでリング比を見つける方法!今月の履歴書から先月の履歴書を引いた数(写真)

WBOY
WBOYオリジナル
2016-06-23 14:19:402466ブラウズ


[今月の履歴書の数] - [先月の履歴書の数] = [先月と比較した数] (写真)

SQL文の書き方は?
SELECT DATE_FORMAT(m_adddate,'%m') as month,count(m_id) as zong,DATE_FORMAT(m_adddate,'%Y') as year from job_myreceive where DATE_FORMAT(m_adddate,'%Y')=2011 GROUP BY DATE_FORMAT( m_adddate,'%m');


ディスカッション (解決策) に返信

それほど多くの人がいないことが判明しました。

専門家が来て私を助けてくれます

1 月はどのように前月としてカウントされますか?

1 月はどのように前月として数えられますか?

01 と比較する必要はありません

純粋な SQL を使用してのみ計算できますか?

純粋な SQL を使用してのみ計算できますか? PHP と組み合わせることもできます

PHP を使用する場合、SQL ステートメントを直接使用するのは少し面倒ですが、不可能ではありません。

mysqlには引き算はありませんか?

現在の月を前月に接続するだけです
DATE_FORMAT(m_adddate,'%Y%m') = DATE_FORMAT(DATE_SUB(m_adddate,INTERVAL 1 MONTH),'%Y%m')

現在の月を前月に接続します前月 それを関連付けるだけです
DATE_FORMAT(m_adddate,'%Y%m') = DATE_FORMAT(DATE_SUB(m_adddate,INTERVAL 1 MONTH),'%Y%m') Banban から詳細を求められ、接続後の構文を投稿して見つけました。 out: 0

テストデータをくれました

試してみませんか

select DATE_FORMAT(t1.m_adddate,'%m')  as month, t1.m_id,DATE_FORMAT(t1.m_adddate,'%Y') as year,t1.m_id-t2.m_id from job_myreceive t1 left join job_myreceive t2 on month(t1.m_adddate)-1=month(t2.m_adddate) where DATE_FORMAT(t1.m_adddate,'%Y')=2011

月 履歴書の数 年 テスト (比較用)
01 4864 2011 0
02 8193 2011 0
03 7182 011 0
04 8472 2011 0
05 7565 2011 0
06 7062 2011 0
07 5620 2011 0
08 5994 2011 0
09 5059 2011 0
10 5574 11 0
11 3428 2011 0
12 5260 2011 0

[SQL ステートメント]: SELECT DATE_FORMAT(m_adddate,'%m') は月、count(m_id) はゾン、DATE_FORMAT(m_adddate,'%Y') は年、
DATE_FORMAT(m_adddate,'%Y%m') = DATE_FORMAT(DATE_SUB(m_adddate, INTERVAL 1 MONTH),' %Y%m') as test
from job_myreceive where DATE_FORMAT(m_adddate,'%Y')=2011 GROUP BY DATE_FORMAT(m_adddate,'%m')

試してみてもらえますか? 、間違ったループ]

あなたはテスト データを渡します 月 履歴書の数 年 テスト (比較用)

01 4864 2011 0
02 8193 2011 0
03 7182 2011 0
04 8472 2011 0
75 65 2011 0
06 7062 2011 0
07 5620 2011 0
08 5994 2011 0
09 5059 2011 0
11 3428 2011 0
12 5260 2011 0

[SQL ステートメント]: SELECT DATE _FORMAT(m_adddate,'%m') としてmonth,count(m_id) as zong,DATE_FORMAT(m_adddate,'%Y') as year,
DATE_FORMAT(m_adddate,'%Y%m') = DATE_FORMAT(DATE_SUB(m_adddate,INTERVAL 1 MONTH),'%Y%m ') as test
from job_myreceive where DATE_FORMAT(m_adddate,'%Y')=2011 GROUP BY DATE_FORMAT(m_adddate,'%m')

それでは、データを入力するためのテーブルを作成してもよろしいですか?

SQLコマンドをエクスポートできないのですか?

それでは、テーブルを作成してデータを入力してもよろしいですか?
SQLコマンドをエクスポートできないのですか?


SET FOREIGN_KEY_CHECKS=0;
-----------------------------
-- `job_myreceive` のテーブル構造
- - ----------------------------
DROP TABLE IF EXISTS `job_myreceive`
CREATE TABLE `job_myreceive` (
`m_id` int (10) unsigned NOT NULL auto_increment、
`m_rid` int(10) NOT NULL デフォルト '0'、
`m_name` varchar(50) NOT NULL、
`m_sex` tinyint(1) NOT NULL デフォルト '0'、
`m_birth` 日付 NOT NULL、
`m_edu` tinyint(2) NOT NULL デフォルト '0'、
`m_hid` int(10) NOT NULL デフォルト '0'、
`m_place` varchar(50) NOT NULL コメント '位置を適用'、
`m_cmember` varchar(20) NOT NULL、
`m_pmember` varchar(20) NOT NULL、
`m_adddate` datetime NOT NULL デフォルト '0000-00-00 00:00:00'、
`m_read ` tinyint(1) NOT NULL デフォルト '0'、
`m_content` テキスト NOT NULL、
`m_lang` tinyint(1) NOT NULL デフォルト '0'、
主キー (`m_id`)、
KEY `m_place` ( ` m_place`),
KEY `m_hid` (`m_hid`)
) ENGINE=MyISAM AUTO_INCREMENT=111546 DEFAULT CHARSET=gbk;

-------------------- ---------
-- job_myreceive のレコード
-- ----------------------------
INSERT INTO ` job_myreceive` VALUES ('74', '625047', 'Li Qiang', '1', '1980-01-01', '5', '251168', '医師助手', 'qq102971141', 'hzcxlgq', ' 2013-05-28 13:43:17', '0', '', '0');
INSERT INTO `job_myreceive` VALUES ('77', '625047', '李强', '1', ' 1980 -01-01'、'5'、'245030'、'常駐'、'aabb41724125'、'hzcxlgq'、'2010-12-28 13:54:27'、'0'、''、0' );
INSERT INTO `job_myreceive` VALUES ('78', '675931', 'Dr. Wang', '1', '0000-01-01', '0', '271982', '肛門直腸科医', ' zbyyyy', 'blair123', '2010-12-29 21:57:50', '0', '', '0');
INSERT INTO `job_myreceive` VALUES ('79', '691982', 'ありがとうあなた永峰', '1', '1990-05-10', '1', '270201', 'ドライバー', '永続', 'ドライバー', '2010-12-29 21:59:26', ' 0', 'このドライバーは車を持ってきて、診療所で働きたいと考えています。連絡先番号 15817540656', '0');
INSERT INTO `job_myreceive` VALUES ('80', '691989', 'Lin Zeping', '2', '1985-09-24', '5', '270166) ', '産婦人科研修医', 'dgsgyy', 'linzeping', '2010-12-29 22:00:36', '0', '', '0');
INSERT INTO `job_myreceive` VALUES ( '82', '691989', '林澤平', '2', '1985-09-24', '5', '265725', '産婦人科', '6514585891AAA', '林澤平', '2010- 12-29 22:05:28', '0', '', '0');
INSERT INTO `job_myreceive` VALUES ('83', '687648', 'Lin Zihang', '1', '1977-) 06-06', '5', '270969', '管理部長', 'xacayy', 'l608636', '2011-05-29 22:07:46', '0', '', '0' );
INSERT INTO `job_myreceive` VALUES ('90', '687648', 'Lin Zihang', '1', '1977-06-06', '5', '261560', '外来診療所長', ' Bagdnui ', 'l608636', '2010-12-29 22:12:50', '0', '', '0');
INSERT INTO `job_myreceive` VALUES ('54523', '697204', 'Yao) Jie ', '1', '1968-10-21', '6', '346100', '外来院長', 'njcxyy', 'hbjzyaojie', '2011-07-16 13:29:51', '0 ', '', '0');
INSERT INTO `job_myreceive` VALUES ('92', '687648', 'Lin Zihang', '1', '1977-06-06', '5', ' 271967' , '外来院長', '518fck', 'l608636', '2011-12-29 22:12:50', '0', '', '0'); INSERT INTO `job_myreceive` VALUES ('3232', '692140', '吕锋', '1', '0000-00-00', '5', '272140', '医院总经理', '遵义女子医院', '开拓发展', '2011-01-16 10:20:40', '0', '', '0');
INSERT INTO `job_myreceive` VALUES ('660', '692067', '卓志彬', '1', '1984-09-27', '4', '265632', '医院经营管理主任', 'yihao', '1291190', '2011-01-03 15:43:02', '0', '', '0');
INSERT INTO `job_myreceive` VALUES ('96', '650782', '张医生', '1', '0000-00-00', '6', '264340', '痔科', 'zg3610', 'yuanmeng', '2011-07-29 22:40:15', '0', '', '0');

SELECT DATE_FORMAT(a.m_adddate,'%Y%m') as Ym, count(*) as cnt_a,(select count(*) from job_myreceive where  DATE_FORMAT(a.m_adddate,'%Y%m') = DATE_FORMAT(DATE_SUB(m_adddate,INTERVAL 1 MONTH),'%Y%m')) as cnt_b FROM job_myreceive a group by 1
Ym     cnt_a  cnt_b  201012 6      2 201101 2      0 201105 1      0 201107 2      0 201112 1      0 201305 1      0 

在你给出的数据中
m_adddate 只有这些
'2010-12-29 22:12:50'
'2010-12-28 13:54:27'
'2010-12-29 21:57:50'
'2010-12-29 21:59:26'
'2010-12-29 22:00:36'
'2010-12-29 22:05:28'
'2011-01-16 10:20:40'
'2011-01-03 15:43:02'
'2011-05-29 22:07:46'
'2011-07-16 13:29:51'
'2011-07-29 22:40:15'
'2011-12-29 22:12:50'
'2013-05-28 13:43:17'

显然只有桃红的存在上月数据

嗯,这样写清楚些

SELECT DATE_FORMAT(a.m_adddate,'%Y%m') as Ym, count(*) as `当月`,(select count(*) from job_myreceive where  DATE_FORMAT(a.m_adddate,'%Y%m') = DATE_FORMAT(DATE_add(m_adddate,INTERVAL 1 MONTH),'%Y%m')) as 上月 FROM job_myreceive a group by 1
Ym     当月   上月  201012 6      0 201101 2      6 201105 1      0 201107 2      0 201112 1      0 201305 1      0

嗯,这样写清楚些

SELECT DATE_FORMAT(a.m_adddate,'%Y%m') as Ym, count(*) as `当月`,(select count(*) from job_myreceive where  DATE_FORMAT(a.m_adddate,'%Y%m') = DATE_FORMAT(DATE_add(m_adddate,INTERVAL 1 MONTH),'%Y%m')) as 上月 FROM job_myreceive a group by 1
Ym     当月   上月  201012 6      0 201101 2      6 201105 1      0 201107 2      0 201112 1      0 201305 1      0


感谢【xuzuning版主】的帮忙,实现了我的需求!

再请问一下这种2个select语句还有其他写法吗

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。