Difference between where and having in sql server

Поделиться
HTML-код
  • Опубликовано: 14 сен 2015
  • sql server where vs having
    sql server group by where having
    group by having sql server
    In this vide we will discuss the difference between where and having caluses in sql server.
    Healthy diet is very important both for the body and mind. If you like Aarvi Kitchen recipes, please support by sharing, subscribing and liking our RUclips channel. Hope you can help.
    / @aarvikitchen5572
    Let us understand the difference with an example.
    To calculate total sales by product, we would write a GROUP BY query as shown below
    SELECT Product, SUM(SaleAmount) AS TotalSales
    FROM Sales
    GROUP BY Product
    Now if we want to find only those products where the total sales amount is greater than $1000, we will use HAVING clause to filter products
    SELECT Product, SUM(SaleAmount) AS TotalSales
    FROM Sales
    GROUP BY Product
    HAVING SUM(SaleAmount) ] 1000
    If we use WHERE clause instead of HAVING clause, we will get a syntax error. This is because the WHERE clause doesn’t work with aggregate functions like sum, min, max, avg, etc.
    SELECT Product, SUM(SaleAmount) AS TotalSales
    FROM Sales
    GROUP BY Product
    WHERE SUM(SaleAmount) ] 1000
    So in short, the difference is WHERE clause cannot be used with aggregates where as HAVING can.
    However, there are other differences as well that we need to keep in mind when using WHERE and HAVING clauses. WHERE clause filters rows before aggregate calculations are performed where as HAVING clause filters rows after aggregate calculations are performed. Let us understand this with an example.
    Total sales of iPhone and Speakers can be calculated by using either WHERE or HAVING clause
    Calculate Total sales of iPhone and Speakers using WHERE clause : In this example the WHERE clause retrieves only iPhone and Speaker products and then performs the sum.
    SELECT Product, SUM(SaleAmount) AS TotalSales
    FROM Sales
    WHERE Product in ('iPhone', 'Speakers')
    GROUP BY Product
    Calculate Total sales of iPhone and Speakers using HAVING clause : This example retrieves all rows from Sales table, performs the sum and then removes all products except iPhone and Speakers.
    SELECT Product, SUM(SaleAmount) AS TotalSales
    FROM Sales
    GROUP BY Product
    HAVING Product in ('iPhone', 'Speakers')
    So from a performance standpoint, HAVING is slower than WHERE and should be avoided when possible.
    Another difference is WHERE comes before GROUP BY and HAVING comes after GROUP BY.
    Difference between WHERE and Having
    1. WHERE clause cannot be used with aggregates where as HAVING can. This means WHERE clause is used for filtering individual rows where as HAVING clause is used to filter groups.
    2. WHERE comes before GROUP BY. This means WHERE clause filters rows before aggregate calculations are performed. HAVING comes after GROUP BY. This means HAVING clause filters rows after aggregate calculations are performed. So from a performance standpoint, HAVING is slower than WHERE and should be avoided when possible.
    3. WHERE and HAVING can be used together in a SELECT query. In this case WHERE clause is applied first to filter individual rows. The rows are then grouped and aggregate calculations are performed, and then the HAVING clause filters the groups.
    Text version of the video
    csharp-video-tutorials.blogspo...
    Slides
    csharp-video-tutorials.blogspo...
    All SQL Server Text Articles
    csharp-video-tutorials.blogspo...
    All SQL Server Slides
    csharp-video-tutorials.blogspo...
    Full SQL Server Course
    • SQL Server tutorial fo...
    All Dot Net and SQL Server Tutorials in English
    ruclips.net/user/kudvenka...
    All Dot Net and SQL Server Tutorials in Arabic
    / kudvenkatarabic

Комментарии • 71

  • @muhammadrehbarsheikh8498
    @muhammadrehbarsheikh8498 9 лет назад +3

    Thanks venkat sir! God bless you!

  • @raqibul1000
    @raqibul1000 9 лет назад +2

    Many Many Thanks For Your Nice Tutorials.Go Ahead.

  • @dialidasgupta7991
    @dialidasgupta7991 7 лет назад +1

    Thank you Sir! Your illustration was very clear, and it helped a lot! :)

  • @Hibore222
    @Hibore222 6 лет назад +2

    a very helpful video, thank you!

  • @DiegoMartinez-tl7iu
    @DiegoMartinez-tl7iu 3 года назад +1

    Thanks for sharing your knowledge. It was helpful to me.

  • @ians474
    @ians474 4 года назад

    Clear and concise! I also like the way you speak! Good job sir! :)

  • @yuhmin5365
    @yuhmin5365 4 года назад

    Great explanation, thank you!

  • @Palusko
    @Palusko 9 лет назад +1

    Excellent, thank you

  • @rickymartin8759
    @rickymartin8759 7 лет назад

    Very useful. Thank you sir

  • @Kikel777
    @Kikel777 6 лет назад

    Perfect ! Ty

  • @ramchandersrivastava6352
    @ramchandersrivastava6352 6 лет назад

    Great work

  • @ceslps76
    @ceslps76 7 лет назад

    Good english pronunciation, and very well explained. Thank you my friend.

  • @Ravivaraavlogs
    @Ravivaraavlogs 9 лет назад +5

    Hi venkat sir,can u pls make it one video for execution plan and some tips of performance tunning

  • @haroldpepete
    @haroldpepete 9 лет назад

    nice, thank my friend

  • @FedericoCoppolaIT
    @FedericoCoppolaIT 3 года назад

    Thanks so much!

  • @sonaltaksande5898
    @sonaltaksande5898 4 года назад

    very well explained. Thank you

  • @enriquebarajashernandez7882
    @enriquebarajashernandez7882 4 года назад

    Thanks alot sir it helped me a lot!

  • @mayankvora8329
    @mayankvora8329 5 лет назад

    Superb explaination

  • @krzysztofs8535
    @krzysztofs8535 7 лет назад +10

    Thank U Venkat! Very simple video. I see you add some videos missing in the previous sessions. You are the best teacher. Please go on with this tutorial! I watched all your videos. I'm the biggest fan, my career goes further thanks to you.

  • @rizwanmohd2734
    @rizwanmohd2734 5 лет назад

    Thank you!

  • @darpure
    @darpure 3 года назад

    thank you!!!

  • @kasungimhana3640
    @kasungimhana3640 6 лет назад

    Perfect

  • @syedafatima320
    @syedafatima320 5 лет назад

    excellent explanation

  • @SanjayKumar-un7xf
    @SanjayKumar-un7xf 5 лет назад

    very nice expiation sir...

  • @TheAnkitatri
    @TheAnkitatri 5 лет назад

    Very good 👍👍

  • @rishusingh6504
    @rishusingh6504 3 года назад

    Very well explained

  • @guneetgupta3356
    @guneetgupta3356 2 года назад

    thanks :)

  • @defguy319
    @defguy319 3 года назад

    Thank you

  • @nagireddyveeramreddy65
    @nagireddyveeramreddy65 9 лет назад +1

    Hi venkat Sir Please make video on linked servers and performance tuning

  • @KL-es9bt
    @KL-es9bt 8 лет назад +3

    very intuitive thanks

    • @Csharp-video-tutorialsBlogspot
      @Csharp-video-tutorialsBlogspot  8 лет назад +5

      Thank you very much for taking time to give feedback. This means a lot. I am very glad you found the videos useful.
      I have organised all the Dot Net & SQL Server videos in to playlists, which could be useful to you
      ruclips.net/user/kudvenkatplaylists?view=1&sort=dd
      If you need DVDs or to download all the videos for offline viewing please visit
      www.pragimtech.com/order.aspx
      Slides and Text Version of the videos can be found on my blog
      csharp-video-tutorials.blogspot.com
      Tips to effectively use my youtube channel.
      ruclips.net/video/y780MwhY70s/видео.html
      If you want to receive email alerts, when new videos are uploaded, please subscribe to my youtube channel.
      ruclips.net/user/kudvenkat
      If you like these videos, please click on the THUMBS UP button below the video.
      May I ask you for a favor. I want these tutorials to be helpful for as many people as possible. Please share the link with your friends and family who you think would also benefit from them.
      Good Luck
      Venkat

  • @ajaypratapyadav9843
    @ajaypratapyadav9843 6 лет назад

    very nice I learned a lot, request you to please share an query where we can break big files into small pieces, i have required it

  • @pawanjoshi
    @pawanjoshi 9 лет назад +6

    sir please upload a video of different types of loops used in T-SQL with its real time use.

  • @Muhammadali-jd5fu
    @Muhammadali-jd5fu 4 года назад

    thnk u

  • @rajprasadmishra2010
    @rajprasadmishra2010 9 лет назад +1

    sir plz upload some videos depend on t-sql and tcl commit,rollback and save point

  • @Yinusa00
    @Yinusa00 Год назад

    so many years later still useful

  • @mahesh26sai
    @mahesh26sai 2 года назад

    Since 9 years I have been from IC to the manager and every time I prepare for an interview or to brush my skills, my default search term is kudvenkat SQL

  • @nys8260
    @nys8260 3 года назад +1

    From Part 10:
    where can be uses with select, insert, update, delete
    having: only used with select

  • @VinodKumar-cp5bt
    @VinodKumar-cp5bt 4 года назад

    Hi venkat In an interview I have been asked to find out the error in this query can you help.
    create table employeees(
    Firstname varchar2(15) Not null,
    Midname varchar2(5),
    Lastname varchar2(15) Not null,
    SSNnumber char(9),
    birthday date,
    address varchar2(50),
    Sex char(1),
    salary int default 800,
    superSSN char(9),
    depnum numeric(5),
    primary key(SSNnumber),
    check (Sex == 'M' OR 'F' OR 'm' OR 'f'),
    foreign key(depnum) references departments(depnum)
    );

  • @TheAnkitatri
    @TheAnkitatri 5 лет назад

    Sir plz tell me best practice for this ..

  • @mankurevanth6144
    @mankurevanth6144 2 года назад

    if having is executed after the execution of aggregate functions then why can't we use alias name in having clause?

  • @dhanasekar1966
    @dhanasekar1966 7 лет назад

    how much total sql server tutorial dvd ?

  • @balubalaji7179
    @balubalaji7179 5 лет назад

    Good explanation...but low voice....

  • @abdullahmohammad5613
    @abdullahmohammad5613 2 года назад

    Please correct me if I am mistaken, both WHERE and HAVING are executed before the SELECT statement which contains the aggregate calculations. So why would it make a difference if we used WHERE over HAVING in our examples?

    • @tridipsharma157
      @tridipsharma157 Год назад

      WHERE cannot be used with aggregate functions, so in that case you have to use HAVING