50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

یک سئوال در مورد یک کوئری-1

با سلام و خسته نباشید خدمت شما

من کوئری زیر را اجرا می کنم کوئری زیر این کارو انجام می دهد که sum هر اجناس را می گیرد البته در subquery اینکار را انجام می دهد بعد در select اول min و max کل جمع ها را به ما نشان می دهد حالا سئوال من این هست که من فیلدهای دیگر جدول table_1 را اگر در select اول قرار بدهم به من ارور می دهد و نمی توانم فیلدهای دیگر را نمایش دهم ممنون می شوم کمکم کنید لطف می کنید.

کوئری در زیر هست :

SELECT MAX(AVGSAL) AS Max_1,MIN(AVGSAL) AS Min_1 FROM 
(
SELECT TABLE_1.ID_JENSE, SUM(price) AS avgsal FROM TABLE_1 
 GROUP BY TABLE_1.ID_JENSE
) AS A1

و کوئری های زیر مربوط به جدول table_1 می باشد با اطلاعات آن.

/****** Object:  Table [dbo].[Table_1]    Script Date: 30/11/2017 08:41:29 ب.ظ ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Table_1](
	[date1] [datetime] NULL,
	[id] [int] IDENTITY(1,1) NOT NULL,
	[jense] [varchar](50) NULL,
	[id_jense] [int] NULL,
	[price] [int] NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO
SET IDENTITY_INSERT [dbo].[Table_1] ON 

INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 1, N'berenj', 2, 10000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 2, N'roghan', 1, 20000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-04T00:00:00.000' AS DateTime), 4, N'adams', 3, 40000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-06T00:00:00.000' AS DateTime), 6, N'berenj', 2, 200000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-07T00:00:00.000' AS DateTime), 7, N'adams', 3, 10000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-08T00:00:00.000' AS DateTime), 8, N'roghan', 1, 80000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-09T00:00:00.000' AS DateTime), 9, N'roghan', 1, 90000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 11, N'bastani', 6, 110000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 12, N'bastani', 6, 120000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 14, N'berenj', 2, 130000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 15, N'roghan', 1, 140000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-02T00:00:00.000' AS DateTime), 18, N'adams', 3, 60000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 19, N'zeyton', 4, 160000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 20, N'zeyton', 4, 170000)
INSERT [dbo].[Table_1] ([date1], [id], [jense], [id_jense], [price]) VALUES (CAST(N'2010-01-01T00:00:00.000' AS DateTime), 21, N'zeyton', 4, 750000)
SET IDENTITY_INSERT [dbo].[Table_1] OFF

پرسیده شده در 1396/09/09 توسط

6 پاسخ

0

با سلام و خسته نباشید

از راهنمایی های شما بسیار ممنونم لطف کردید.

من یک سئوالی در سایت tosinso.com سئوال کردم بی پاسخ مانده است خواستم بدونم می توانید منرا در این مورد راهنمایی کنید :

لینک در زیر هست :

سوال: در مورد تابع .WRITE برای لاگ کمتر در فایل ldf

متشکرم

پاسخ در 1396/10/18 توسط
1

سلام

این یک کد پیشنهادی است

select tbl2.* ,  tbl1.* from (
select tbl1.id_jense , sum(tbl1.price) as sumP , min(tbl1.price) as MinP ,max(tbl1.price) as MaxP  from Table_1 tbl1
group by tbl1.id_jense
) as tbl1
inner join Table_1 tbl2
on tbl1.id_jense= tbl2.id_jense
پاسخ در 1396/10/09 توسط
1

با سلام

فکر می کنم منطق کار شما درست نیست

شما داری در یک select هم min و هم max رو انتخاب می کنی، حال اینکه این min و max هر کدوم جداگانه مربوط به یک سطر از جدول هست که id متفاوتی دارند، و نمی تونن اطلاعات اون سطر ها کنار هم قرار بگیرند

لطفا بیشتر توضیح بدید دقیقا میخاهید چکار کنین؟؟

پاسخ در 1396/09/13 توسط
0

با سلام و خسته نباشید خدمت شما

اگر زحمت نیست و سورس را بگذارید ممنون می شوم لطف می کنید.

پاسخ در 1396/10/06 توسط
1

سلام و درود

برای این کار شما ابتدا باید تمام ستونهای جدول رو select کنی و سپس با یک select داخلی که در اون Min ,max رو محاسبه می کنی Inner join کنی...

با این کار تمام سطر های جدول و در کنار اون min و max نمایش داده می شه.

امتحان کنین اگر نشد بگید سورسش رو بزارم...

پاسخ در 1396/09/14 توسط
0

با سلام خدمت شما دوست عزیز

از توجه شما خیلی متشکرم

دقیقا شما درست می فرمایید منظور من این هست می خواهم مثلا جدول 1000 رکورد دارد بیاید فیلدهای دیگر را هم نمایش بدهد اما min و max در جدول تکرار شود یعنی مثلا ما 1000 رکورد داریم بیاید مقدار min و max را در 1000 رکورد تکرار کند اگر به این صورت باشد هم فیلدهای جدول را داریم و هم جواب min و max را داریم.

ممنونم می شوم راهنمایی کنید

با تشکر از شما

پاسخ در 1396/09/14 توسط

پاسخ شما